





'''simple docstring'''



def 				_lowerCAmelCase  (			lowerCamelCase_     :					str						,    lowerCamelCase_     :					str			):
			__lowercase			  =							len(lowerCamelCase_			)
			__lowercase			  =							len(lowerCamelCase_			)
			__lowercase			  =							[[False for _ in range(m + 1			)] for _ in range(n + 1			)]
			__lowercase			  =							True
			for i in range(lowerCamelCase_			):
						for j in range(m + 1			):
									if dp[i][j]:
												if j < m and a[i].upper() == b[j]:
															__lowercase			  =							True
												if a[i].islower():
															__lowercase			  =							True
			return dp[n][m]


if __name__ == "__main__":
	import doctest

	doctest.testmod()












'''simple docstring'''



def 				_lowerCAmelCase  (			lowerCamelCase_     :					str						,    lowerCamelCase_     :					str			):
			__lowercase			  =							len(lowerCamelCase_			) + 1
			__lowercase			  =							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.
			__lowercase			  =							[[0 for i in range(lowerCamelCase_			)] for j in range(lowerCamelCase_			)]

			# 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						,    lowerCamelCase_			):
						__lowercase			  =							0

			# since string of zero length will match with pattern where there
			# is at least one * alternatively
			for j in range(1						,    lowerCamelCase_			):
						__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						,    lowerCamelCase_			):
						for j in range(1						,    lowerCamelCase_			):
									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 :")

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





