





def       _A  (      lowerCamelCase							, lowerCamelCase   ):
   a__	:						Optional[Any]      		=  len(__lowerCAmelCase   ) + 1
   a__	:						int      		=  len(__lowerCAmelCase   ) + 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.
   a__	:						Dict      		=  [[0 for i in range(__lowerCAmelCase   )] for j in range(__lowerCAmelCase   )]

   # since string of zero length match pattern of zero length
   a__	:						Dict      		=  1

   # since pattern of zero length will never match with string of non-zero length
   for i in range(1							, __lowerCAmelCase   ):
      a__	:						Union[str, Any]      		=  0

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

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

  SCREAMING_SNAKE_CASE__       :			Any			      =						"aab"
  SCREAMING_SNAKE_CASE__       :			Optional[Any]			      =						"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}')






SCREAMING_SNAKE_CASE__       :			Union[str, Any]			      =						9.80665






def       _A  (      lowerCamelCase							, lowerCamelCase							, lowerCamelCase = g   ):

   if fluid_density <= 0:
      raise ValueError("Impossible fluid density"   )
   if volume < 0:
      raise ValueError("Impossible Object volume"   )
   if gravity <= 0:
      raise ValueError("Impossible Gravity"   )

   return fluid_density * gravity * volume


if __name__ == "__main__":
  import doctest

  # run doctest
  doctest.testmod()

