

def      snake_case__      (   SCREAMING_SNAKE_CASE_		:   str     ,					SCREAMING_SNAKE_CASE_		:   str      ):



     '''simple docstring'''





     lowercase__   :       List[Any]				=	len(SCREAMING_SNAKE_CASE_      ) + 1
     lowercase__   :       List[str]				=	len(SCREAMING_SNAKE_CASE_      ) + 1

     # dp is a 2d matrix where dp[i][j] denotes whether prefix string of
     # length i of input_string matches with prefix string of length j of
     # given pattern.
     # "dp" stands for dynamic programming.
     lowercase__   :       Tuple				=	[[0 for i in range(SCREAMING_SNAKE_CASE_      )] for j in range(SCREAMING_SNAKE_CASE_      )]

     # since string of zero length match pattern of zero length
     lowercase__   :       Tuple				=	1

     # since pattern of zero length will never match with string of non-zero length
     for i in range(1     ,					SCREAMING_SNAKE_CASE_      ):
          lowercase__   :       str				=	0

     # since string of zero length will match with pattern where there
     # is at least one * alternatively
     for j in range(1     ,					SCREAMING_SNAKE_CASE_      ):
          lowercase__   :       Any				=	dp[0][j - 2] if pattern[j - 1] == '*' else 0

     # now using bottom-up approach to find for all remaining lengths
     for i in range(1     ,					SCREAMING_SNAKE_CASE_      ):
          for j in range(1     ,					SCREAMING_SNAKE_CASE_      ):
               if input_string[i - 1] == pattern[j - 1] or pattern[j - 1] == ".":
                    lowercase__   :       int				=	dp[i - 1][j - 1]

               elif pattern[j - 1] == "*":
                    if dp[i][j - 2] == 1:
                         lowercase__   :       Dict				=	1
                    elif pattern[j - 2] in (input_string[i - 1], "."):
                         lowercase__   :       Dict				=	dp[i - 1][j]
                    else:
                         lowercase__   :       str				=	0
               else:
                    lowercase__   :       List[str]				=	0

     return bool(dp[-1][-1]      )


if __name__ == "__main__":
       import doctest

       doctest.testmod()
       # inputing the strings
       # input_string = input("input a string :")
       # pattern = input("input a pattern :")

       snake_case_        =			'''aab'''
       snake_case_        =			'''c*a*b'''

       # using function to check whether given string matches the given pattern
       if match_pattern(input_string, pattern):
              print(F'''{input_string} matches the given pattern {pattern}''')
       else:
              print(F'''{input_string} does not match with the given pattern {pattern}''')




def      snake_case__      (   SCREAMING_SNAKE_CASE_		:   int      ):



     '''simple docstring'''





     return 1 if digit in (0, 1) else (digit * factorial(digit - 1      ))

def      snake_case__      (   SCREAMING_SNAKE_CASE_		:   int      ):



     '''simple docstring'''





     lowercase__   :       List[str]				=	0
     lowercase__   :       Optional[int]				=	number
     while duplicate > 0:
          lowercase__				,			lowercase__   :       Tuple				=	divmod(SCREAMING_SNAKE_CASE_     ,					10      )
          fact_sum += factorial(SCREAMING_SNAKE_CASE_      )
     return fact_sum == number


if __name__ == "__main__":
       print('''Program to check whether a number is a Krisnamurthy Number or not.''')
       snake_case_        =			int(input('''Enter number: ''').strip())
       print(
           F'''{number} is {'' if krishnamurthy(number) else 'not '}a Krishnamurthy Number.'''
       )

