def 			__UpperCamelCase     (    A			,				A = False				):

     if not isinstance(SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_				):
          UpperCamelCase__					    =   f"Expected string as input, found {type(SCREAMING_SNAKE_CASE_				)}"
          raise ValueError(SCREAMING_SNAKE_CASE_				)
     if not isinstance(SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_				):
          UpperCamelCase__					    =   f"Expected boolean as use_pascal parameter, found {type(SCREAMING_SNAKE_CASE_				)}"
          raise ValueError(SCREAMING_SNAKE_CASE_				)

     UpperCamelCase__					    =   input_str.split('''_'''				)

     UpperCamelCase__					    =   0 if use_pascal else 1

     UpperCamelCase__					    =   words[start_index:]

     UpperCamelCase__					    =   [word[0].upper() + word[1:] for word in words_to_capitalize]

     UpperCamelCase__					    =   '''''' if use_pascal else words[0]

     return "".join([initial_word, *capitalized_words]				)


if __name__ == "__main__":
     from doctest import testmod

     testmod()









'''simple docstring'''
def 			lowerCamelCase(							SCREAMING_SNAKE_CASE_       ,SCREAMING_SNAKE_CASE_     )		->		bool:
			A_									= len(SCREAMING_SNAKE_CASE_     ) + 1
			A_									= len(SCREAMING_SNAKE_CASE_     ) + 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_									= [[0 for i in range(SCREAMING_SNAKE_CASE_     )] for j in range(SCREAMING_SNAKE_CASE_     )]

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

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

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

									elif pattern[j - 1] == "*":
												if dp[i][j - 2] == 1:
															A_									= 1
												elif pattern[j - 2] in (input_string[i - 1], "."):
															A_									= dp[i - 1][j]
												else:
															A_									= 0
									else:
												A_									= 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}""")




