def      _a					(   lowercase__	:      str			):







     '''simple docstring'''


     SCREAMING_SNAKE_CASE__					:					Optional[Any]      =		[0] * len(lowercase__			)

     for i in range(1  ,	len(lowercase__			)			):
          # use last results for better performance - dynamic programming
          SCREAMING_SNAKE_CASE__					:					Dict      =		prefix_result[i - 1]
          while j > 0 and input_string[i] != input_string[j]:
               SCREAMING_SNAKE_CASE__					:					Union[str, Any]      =		prefix_result[j - 1]

          if input_string[i] == input_string[j]:
               j += 1
          SCREAMING_SNAKE_CASE__					:					str      =		j

     return prefix_result







def      _a					(   lowercase__	:      str			):







     '''simple docstring'''


     return max(prefix_function(lowercase__			)			)


if __name__ == "__main__":
      import doctest

      doctest.testmod()






# this script reports modified .py files under the desired list of top-level sub-dirs passed as a list of arguments, e.g.:
#   python ./utils/get_modified_files.py utils src tests examples
#
# it uses git to find the forking point and which files were modified - i.e. files not under git won't be considered
# since the output of this script is fed into Makefile commands it doesn't print a newline after the results

import re
import subprocess
import sys


__lowercase				      =						subprocess.check_output("""git merge-base main HEAD""".split()).decode("""utf-8""")
__lowercase				      =						(
    subprocess.check_output(f'git diff --diff-filter=d --name-only {fork_point_sha}'.split()).decode("""utf-8""").split()
)

__lowercase				      =						"""|""".join(sys.argv[1:])
__lowercase				      =						re.compile(rf'^({joined_dirs}).*?\.py$')

__lowercase				      =						[x for x in modified_files if regex.match(x)]
print(""" """.join(relevant_modified_files), end="""""")





