





from collections import defaultdict



def  SCREAMING_SNAKE_CASE				(      snake_case						,   snake_case							)		->    bool:
		__lowercase											=     first_str.lower().strip()
		__lowercase											=     second_str.lower().strip()

		# Remove whitespace
		__lowercase											=     first_str.replace(' '						,   ''							)
		__lowercase											=     second_str.replace(' '						,   ''							)

		# Strings of different lengths are not anagrams
		if len(snake_case							) != len(snake_case							):
				return False

		# Default values for count should be 0
		__lowercase											=     defaultdict(snake_case							)

		# For each character in input strings,
		# increment count in the corresponding
		for i in range(len(snake_case							)							):
				count[first_str[i]] += 1
				count[second_str[i]] -= 1

		return all(_count == 0 for _count in count.values()							)


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

		testmod()
		SCREAMING_SNAKE_CASE_   :      Optional[Any]			=   input('''Enter the first string ''').strip()
		SCREAMING_SNAKE_CASE_   :      Tuple			=   input('''Enter the second string ''').strip()

		SCREAMING_SNAKE_CASE_   :      Union[str, Any]			=   check_anagrams(input_a, input_b)
		print(F"""{input_a} and {input_b} are {'' if status else 'not '}anagrams.""")











def  SCREAMING_SNAKE_CASE				(      snake_case						,   snake_case						,   snake_case							)		->    int:

		def count_of_possible_combinations(snake_case							) -> int:
				if target < 0:
						return 0
				if target == 0:
						return 1
				return sum(count_of_possible_combinations(target - item							) for item in array							)

		return count_of_possible_combinations(snake_case							)



def  SCREAMING_SNAKE_CASE				(      snake_case						,   snake_case						,   snake_case							)		->    int:

		def count_of_possible_combinations_with_dp_array(
		    snake_case						,   snake_case							) -> int:
				if target < 0:
						return 0
				if target == 0:
						return 1
				if dp_array[target] != -1:
						return dp_array[target]
				__lowercase											=     sum(
				    count_of_possible_combinations_with_dp_array(target - item						,   snake_case							)
				    for item in array							)
				__lowercase											=     answer
				return answer

		__lowercase											=     [-1] * (target + 1)
		return count_of_possible_combinations_with_dp_array(snake_case						,   snake_case							)



def  SCREAMING_SNAKE_CASE				(      snake_case						,   snake_case						,   snake_case							)		->    int:
		__lowercase											=     [0] * (target + 1)
		__lowercase											=     1

		for i in range(1						,   target + 1							):
				for j in range(snake_case							):
						if i - array[j] >= 0:
								dp_array[i] += dp_array[i - array[j]]

		return dp_array[target]


if __name__ == "__main__":
		import doctest

		doctest.testmod()
		SCREAMING_SNAKE_CASE_   :      Tuple			=   3
		SCREAMING_SNAKE_CASE_   :      Dict			=   5
		SCREAMING_SNAKE_CASE_   :      Any			=   [1, 2, 5]
		print(combination_sum_iv(n, array, target))




