






"""simple docstring"""
def        snake_case   (     A__			,A__		):
   UpperCAmelCase_  :				Optional[Any]      =      len(A__		) + 1
   UpperCAmelCase_  :				Union[str, Any]      =      len(A__		) + 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.
   UpperCAmelCase_  :				List[str]      =      [[0 for i in range(A__		)] for j in range(A__		)]

   # since string of zero length match pattern of zero length
   UpperCAmelCase_  :				int      =      1

   # since pattern of zero length will never match with string of non-zero length
   for i in range(1			,A__		):
      UpperCAmelCase_  :				List[str]      =      0

   # since string of zero length will match with pattern where there
   # is at least one * alternatively
   for j in range(1			,A__		):
      UpperCAmelCase_  :				List[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			,A__		):
      for j in range(1			,A__		):
         if input_string[i - 1] == pattern[j - 1] or pattern[j - 1] == ".":
            UpperCAmelCase_  :				str      =      dp[i - 1][j - 1]

         elif pattern[j - 1] == "*":
            if dp[i][j - 2] == 1:
               UpperCAmelCase_  :				Dict      =      1
            elif pattern[j - 2] in (input_string[i - 1], "."):
               UpperCAmelCase_  :				str      =      dp[i - 1][j]
            else:
               UpperCAmelCase_  :				List[str]      =      0
         else:
            UpperCAmelCase_  :				Union[str, Any]      =      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 :")

   lowerCamelCase_       			=   '''aab'''
   lowerCamelCase_       			=   '''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}')











"""simple docstring"""
from itertools import count

def        snake_case   (     A__ = 50		):
			UpperCAmelCase_  :				Any      =      [1] * min_block_length

			for n in count(A__		):
						fill_count_functions.append(1		)

						for block_length in range(A__			,n + 1		):
									for block_start in range(n - block_length		):
												fill_count_functions[n] += fill_count_functions[
												    n - block_start - block_length - 1
												]

									fill_count_functions[n] += 1

						if fill_count_functions[n] > 1_00_00_00:
									break

			return n


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



