

class   lowercase_   :



      def __init__(      self				:    Optional[Any]		)   ->					Dict:
        _snake_case						=							''''''
        _snake_case						=							''''''
        _snake_case						=							[]



      def 						UpperCamelCase_		(      self				:    Optional[int]      , A__				:    int      , A__				:    int		)   ->					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]:
            _snake_case						=							self.__min_dist_top_down_dp(m - 1      , n - 1		)
          else:
            _snake_case						=							self.__min_dist_top_down_dp(_UpperCAmelCase      , n - 1		)
            _snake_case						=							self.__min_dist_top_down_dp(m - 1      , _UpperCAmelCase		)
            _snake_case						=							self.__min_dist_top_down_dp(m - 1      , n - 1		)
            _snake_case						=							1 + min(_UpperCAmelCase      , _UpperCAmelCase      , _UpperCAmelCase		)

          return self.dp[m][n]



      def 						UpperCamelCase_		(      self				:    List[str]      , A__				:    str      , A__				:    str		)   ->					Union[str, Any]:
        _snake_case						=							worda
        _snake_case						=							worda
        _snake_case						=							[[-1 for _ in range(len(_UpperCAmelCase		)		)] for _ in range(len(_UpperCAmelCase		)		)]

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







      def 						UpperCamelCase_		(      self				:    Tuple      , A__				:    str      , A__				:    str		)   ->					List[Any]:
        _snake_case						=							worda
        _snake_case						=							worda
        _snake_case						=							len(_UpperCAmelCase		)
        _snake_case						=							len(_UpperCAmelCase		)
        _snake_case						=							[[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
              _snake_case						=							j
            elif j == 0:  # second string is empty
              _snake_case						=							i
            elif worda[i - 1] == worda[j - 1]:  # last characters are equal
              _snake_case						=							self.dp[i - 1][j - 1]
            else:
              _snake_case						=							self.dp[i][j - 1]
              _snake_case						=							self.dp[i - 1][j]
              _snake_case						=							self.dp[i - 1][j - 1]
              _snake_case						=							1 + min(_UpperCAmelCase      , _UpperCAmelCase      , _UpperCAmelCase		)
        return self.dp[m][n]


if __name__ == "__main__":
 __A      		=       EditDistance()

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

 __A      		=       input('''Enter the first string: ''').strip()
 __A      		=       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 ***************''')




from math import factorial



def 				snake_case_(_UpperCamelCase			,	_UpperCamelCase					)							->     int:



  """simple docstring"""






  if n < k or k < 0:
    raise ValueError('''Please enter positive integers for n and k where n >= k'''					)
  return factorial(_UpperCamelCase					) // (factorial(_UpperCamelCase					) * factorial(n - k					))


if __name__ == "__main__":
 print(
     '''The number of five-card hands possible from a standard''',
     f'''fifty-two card deck is: {combinations(52, 5)}\n''',
 )

 print(
     '''If a class of 40 students must be arranged into groups of''',
     f'''4 for group projects, there are {combinations(40, 4)} ways''',
     '''to arrange them.\n''',
 )

 print(
     '''If 10 teams are competing in a Formula One race, there''',
     f'''are {combinations(10, 3)} ways that first, second and''',
     '''third place can be awarded.''',
 )

