


def 			UpperCAmelCase_				(      UpperCAmelCase__						,							UpperCAmelCase__  ):
					lowercase_  							=			len(UpperCAmelCase__  ) + 1
					lowercase_  							=			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_  							=			[[0 for i in range(UpperCAmelCase__  )] for j in range(UpperCAmelCase__  )]

					# since string of zero length match pattern of zero length
					lowercase_  							=			1

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

					# since string of zero length will match with pattern where there
					# is at least one * alternatively
					for j in range(1						,							UpperCAmelCase__  ):
										lowercase_  							=			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_  							=			dp[i - 1][j - 1]

															elif pattern[j - 1] == "*":
																				if dp[i][j - 2] == 1:
																									lowercase_  							=			1
																				elif pattern[j - 2] in (input_string[i - 1], "."):
																									lowercase_  							=			dp[i - 1][j]
																				else:
																									lowercase_  							=			0
															else:
																				lowercase_  							=			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					  =     'aab'
							a					  =     '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 			UpperCAmelCase_				(      UpperCAmelCase__  ):
					return " ".join(input_str.split()[::-1]  )


if __name__ == "__main__":
							import doctest

							doctest.testmod()


