def 					__lowercase						(    lowerCamelCase__			,					lowerCamelCase__       )					->int:

  '''simple docstring'''




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

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

  a__  		=  list(range(len(lowerCamelCase__       ) + 1       )       )

  for i, ca in enumerate(lowerCamelCase__       ):
    a__  		=  [i + 1]

    for j, ca in enumerate(lowerCamelCase__       ):
      # Calculate insertions, deletions and substitutions
      a__  		=  previous_row[j + 1] + 1
      a__  		=  current_row[j] + 1
      a__  		=  previous_row[j] + (ca != ca)

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

    # Store the previous row
    a__  		=  current_row

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


if __name__ == "__main__":
     _SCREAMING_SNAKE_CASE     =     input("""Enter the first word:\n""").strip()
     _SCREAMING_SNAKE_CASE     =     input("""Enter the second word:\n""").strip()

     _SCREAMING_SNAKE_CASE     =     levenshtein_distance(first_word, second_word)
     print(F"""Levenshtein distance between {first_word} and {second_word} is {result}""")


def 					__lowercase						(    lowerCamelCase__       )					->int:

  '''simple docstring'''




  if not isinstance(lowerCamelCase__			,					lowerCamelCase__       ):
    raise ValueError("double_factorial() only accepts integral values"       )
  if n < 0:
    raise ValueError("double_factorial() not defined for negative values"       )
  return 1 if n <= 1 else n * double_factorial(n - 2       )


if __name__ == "__main__":
     import doctest

     doctest.testmod()

