

"""simple docstring"""




from collections import defaultdict

def 						A							(  snake_case__		,					snake_case__     ):




			'''simple docstring'''


			SCREAMING_SNAKE_CASE__										=   first_str.lower().strip()
			SCREAMING_SNAKE_CASE__										=   second_str.lower().strip()

			# Remove whitespace
			SCREAMING_SNAKE_CASE__										=   first_str.replace(""" """		,					""""""     )
			SCREAMING_SNAKE_CASE__										=   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
			SCREAMING_SNAKE_CASE__										=   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()
						A_				:      List[Any]           =			input("Enter the first string ").strip()
						A_				:      List[str]           =			input("Enter the second string ").strip()

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





"""simple docstring"""




def 						A							(  snake_case__		,					snake_case__     ):




			'''simple docstring'''


			SCREAMING_SNAKE_CASE__										=   1  # To kept the Calculated Value
			# Since C(n, k) = C(n, n-k)
			if k > (n - k):
						SCREAMING_SNAKE_CASE__										=   n - k
			# Calculate C(n,k)
			for i in range(snake_case__     ):
						result *= n - i
						result //= i + 1
			return result

def 						A							(  snake_case__     ):




			'''simple docstring'''


			return binomial_coefficient(2 * node_count		,					snake_case__     ) // (node_count + 1)

def 						A							(  snake_case__     ):




			'''simple docstring'''


			if n < 0:
						raise ValueError("""factorial() not defined for negative values"""     )
			SCREAMING_SNAKE_CASE__										=   1
			for i in range(1		,					n + 1     ):
						result *= i
			return result

def 						A							(  snake_case__     ):




			'''simple docstring'''


			return catalan_number(snake_case__     ) * factorial(snake_case__     )


if __name__ == "__main__":
						A_				:      Optional[int]           =			int(input("Enter the number of nodes: ").strip() or 0)
						if node_count <= 0:
												raise ValueError("We need some nodes to work with.")
						print(
						    F'Given {node_count} nodes, there are {binary_tree_count(node_count)} '
						    F'binary trees and {catalan_number(node_count)} binary search trees.'
						)


