code: def _kmp_find(self, needle, haystack, lst = None):
  		
                  if lst != None: return self._kmp_search_all(haystack, needle)
                  else: return self._kmp_search_first(haystack, needle)
docs: find with KMP-searching. needle is an integer array, reprensenting a pattern. haystack is an integer array, reprensenting the input sequence. if lst is None, return the first position found or -1 if no match found. If it's a list, will return a list of all positions in lst. returns -1 or [] if no match found.