






"""simple docstring"""


def 			snake_case  (A_      :str	,			A_      :str      ):







  '''simple docstring'''

  if len(A_      ) < len(A_      ):
    return levenshtein_distance(A_	,			A_      )

  if len(A_      ) == 0:
    return len(A_      )

  a     :			Optional[int]				=   list(range(len(A_      ) + 1      )      )

  for i, ca in enumerate(A_      ):
    a     :			int				=   [i + 1]

    for j, ca in enumerate(A_      ):
      # Calculate insertions, deletions and substitutions
      a     :			Union[str, Any]				=   previous_row[j + 1] + 1
      a     :			Tuple				=   current_row[j] + 1
      a     :			Optional[Any]				=   previous_row[j] + (ca != ca)

      # Get the minimum to append to the current row
      current_row.append(min(A_	,			A_	,			A_      )      )

    # Store the previous row
    a     :			Dict				=   current_row

  # Returns the last element (distance)
  return previous_row[-1]


if __name__ == "__main__":
   _UpperCamelCase				:    Any     =						input('Enter the first word:\n').strip()
   _UpperCamelCase				:    int     =						input('Enter the second word:\n').strip()

   _UpperCamelCase				:    Optional[Any]     =						levenshtein_distance(first_word, second_word)
   print(f'''Levenshtein distance between {first_word} and {second_word} is {result}''')












"""simple docstring"""


def 			snake_case  (A_      :int = 1_0_0_0      ):







  '''simple docstring'''

  a     :			Union[str, Any]				=   0
  a     :			int				=   (n - 1) // 3
  total += ((terms) * (6 + (terms - 1) * 3)) // 2  # total of an A.P.
  a     :			Tuple				=   (n - 1) // 5
  total += ((terms) * (1_0 + (terms - 1) * 5)) // 2
  a     :			Dict				=   (n - 1) // 1_5
  total -= ((terms) * (3_0 + (terms - 1) * 1_5)) // 2
  return total


if __name__ == "__main__":
   print(f'''{solution() = }''')




