
"""simple docstring"""




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  _lowercase:			List[str]       =     len(UpperCamelCase__						) + 1
  _lowercase:			Dict       =     len(UpperCamelCase__						) + 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:			Any       =     [[0 for i in range(UpperCamelCase__						)] for j in range(UpperCamelCase__						)]

  # since string of zero length match pattern of zero length
  _lowercase:			Optional[int]       =     1

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

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

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

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


"""simple docstring"""




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number | (1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number & ~(1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number ^ (1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return ((number >> position) & 1) == 1




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return int((number & (1 << position)) != 0						)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
