'''simple docstring'''

class 			UpperCAmelCase  :





       '''simple docstring'''



       def __init__(						self )  ->  int:
        lowercase__				:    Optional[int]  =					""""""
        lowercase__				:    Dict  =					""""""
        lowercase__				:    Optional[int]  =					[]

       def _lowerCAmelCase(						self	,   __lowerCAmelCase	,   __lowerCAmelCase )  ->  str:
        if m == -1:
         return n + 1
        elif n == -1:
         return m + 1
        elif self.dp[m][n] > -1:
         return self.dp[m][n]
        else:
         if self.worda[m] == self.worda[n]:
          lowercase__				:    Dict  =					self.__min_dist_top_down_dp(m - 1	,   n - 1 )
         else:
          lowercase__				:    str  =					self.__min_dist_top_down_dp(__lowerCAmelCase	,   n - 1 )
          lowercase__				:    Dict  =					self.__min_dist_top_down_dp(m - 1	,   __lowerCAmelCase )
          lowercase__				:    Tuple  =					self.__min_dist_top_down_dp(m - 1	,   n - 1 )
          lowercase__				:    int  =					1 + min(__lowerCAmelCase	,   __lowerCAmelCase	,   __lowerCAmelCase )

         return self.dp[m][n]

       def _lowerCAmelCase(						self	,   __lowerCAmelCase	,   __lowerCAmelCase )  ->  Optional[Any]:
        lowercase__				:    Union[str, Any]  =					worda
        lowercase__				:    Optional[int]  =					worda
        lowercase__				:    Tuple  =					[[-1 for _ in range(len(__lowerCAmelCase ) )] for _ in range(len(__lowerCAmelCase ) )]

        return self.__min_dist_top_down_dp(len(__lowerCAmelCase ) - 1	,   len(__lowerCAmelCase ) - 1 )


       def _lowerCAmelCase(						self	,   __lowerCAmelCase	,   __lowerCAmelCase )  ->  List[str]:
        lowercase__				:    Tuple  =					worda
        lowercase__				:    List[str]  =					worda
        lowercase__				:    str  =					len(__lowerCAmelCase )
        lowercase__				:    str  =					len(__lowerCAmelCase )
        lowercase__				:    List[str]  =					[[0 for _ in range(n + 1 )] for _ in range(m + 1 )]

        for i in range(m + 1 ):
         for j in range(n + 1 ):
          if i == 0:  # first string is empty
           lowercase__				:    List[str]  =					j
          elif j == 0:  # second string is empty
           lowercase__				:    Union[str, Any]  =					i
          elif worda[i - 1] == worda[j - 1]:  # last characters are equal
           lowercase__				:    Any  =					self.dp[i - 1][j - 1]
          else:
           lowercase__				:    List[str]  =					self.dp[i][j - 1]
           lowercase__				:    Any  =					self.dp[i - 1][j]
           lowercase__				:    Optional[int]  =					self.dp[i - 1][j - 1]
           lowercase__				:    int  =					1 + min(__lowerCAmelCase	,   __lowerCAmelCase	,   __lowerCAmelCase )
        return self.dp[m][n]


if __name__ == "__main__":
  __a: Dict          =   EditDistance()

  print("""****************** Testing Edit Distance DP Algorithm ******************""")
  print()

  __a: Optional[int]          =   input("""Enter the first string: """).strip()
  __a: str          =   input("""Enter the second string: """).strip()

  print()
  print(F'The minimum edit distance is: {solver.min_dist_top_down(Sa, Sa)}')
  print(F'The minimum edit distance is: {solver.min_dist_bottom_up(Sa, Sa)}')
  print()
  print("""*************** End of Testing Edit Distance DP Algorithm ***************""")



def     _a					(						lowerCamelCase = 100_0000							):
 lowerCamelCase		:	Any							=      set(range(3,	lowerCamelCase,	2							)							)
 primes.add(2							)
 for p in range(3,	lowerCamelCase,	2							):
  if p not in primes:
   continue
  primes.difference_update(set(range(p * p,	lowerCamelCase,	lowerCamelCase							)							)							)

 lowerCamelCase		:	Any							=      [float(lowerCamelCase							) for n in range(limit + 1							)]

 for p in primes:
  for n in range(lowerCamelCase,	limit + 1,	lowerCamelCase							):
   phi[n] *= 1 - 1 / p

 return int(sum(phi[2:]							)							)


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




