



from __future__ import annotations

from decimal import Decimal
from math import *  # noqa: F403

from sympy import diff







def 	lowerCamelCase_   (  _a    :		str					,						_a    :		float | Decimal					,						_a    :		float = 10**-10  ):



    '''simple docstring'''




    UpperCAmelCase_			:    Tuple   						= a
    while True:
        UpperCAmelCase_			:    Optional[int]   						= Decimal(__lowerCAmelCase  ) - (
            Decimal(eval(__lowerCAmelCase  )  ) / Decimal(eval(str(diff(__lowerCAmelCase  )  )  )  )  # noqa: S307
        )
        # This number dictates the accuracy of the answer
        if abs(eval(__lowerCAmelCase  )  ) < precision:  # noqa: S307
            return float(__lowerCAmelCase  )


# Let's Execute
if __name__ == "__main__":
      # Find root of trigonometric function
      # Find value of pi
      print(F"The root of sin(x) = 0 is {newton_raphson('sin(x)', 2)}")
      # Find root of polynomial
      print(F"The root of x**2 - 5*x + 2 = 0 is {newton_raphson('x**2 - 5*x + 2', 0.4)}")
      # Find Square Root of 5
      print(F"The root of log(x) - 1 = 0 is {newton_raphson('log(x) - 1', 2)}")
      # Exponential Roots
      print(F"The root of exp(x) - 1 = 0 is {newton_raphson('exp(x) - 1', 0)}")


import functools






def    lowerCamelCase__				(				__lowerCAmelCase  :  str    ,							__lowerCAmelCase  :  str				):




			"""simple docstring"""


			lowerCAmelCase_						=	len(__lowerCAmelCase				)
			lowerCAmelCase_						=	len(__lowerCAmelCase				)

			@functools.cache
			def min_distance(__lowerCAmelCase  :  int    ,							__lowerCAmelCase  :  int				) -> int:
						# if first word index is overflow - delete all from the second word
						if indexa >= len_worda:
									return len_worda - indexa
						# if second word index is overflow - delete all from the first word
						if indexa >= len_worda:
									return len_worda - indexa
						lowerCAmelCase_						=	int(worda[indexa] != worda[indexa]				)  # current letters not identical
						return min(
						    1 + min_distance(indexa + 1    ,							__lowerCAmelCase				)    ,							1 + min_distance(__lowerCAmelCase    ,							indexa + 1				)    ,							diff + min_distance(indexa + 1    ,							indexa + 1				)    ,							)

			return min_distance(0    ,							0				)


if __name__ == "__main__":
			import doctest

			doctest.testmod()



