

from __future__ import annotations

from functools import lru_cache
from math import ceil

SCREAMING_SNAKE_CASE_        =      100

SCREAMING_SNAKE_CASE_        =      set(range(3, NUM_PRIMES, 2))
primes.add(2)
SCREAMING_SNAKE_CASE_        =      42

for prime in range(3, ceil(NUM_PRIMES**0.5), 2):
					if prime not in primes:
										continue
					primes.difference_update(set(range(prime * prime, NUM_PRIMES, prime)))

@lru_cache(maxsize=100 )
def 							__SCREAMING_SNAKE_CASE							(				lowerCAmelCase:  int )   ->       set[int]:
				if number_to_partition < 0:
								return set()
				elif number_to_partition == 0:
								return {1}

				_UpperCAmelCase       :		set[int] 		=    set()
				_UpperCAmelCase       :		int
				_UpperCAmelCase       :		int

				for prime in primes:
								if prime > number_to_partition:
												continue
								for sub in partition(number_to_partition - prime ):
												ret.add(sub * prime )

				return ret

def 							__SCREAMING_SNAKE_CASE							(				lowerCAmelCase:  int = 5000 )   ->       int | None:
				for number_to_partition in range(1  ,      lowerCAmelCase ):
								if len(partition(lowerCAmelCase ) ) > number_unique_partitions:
												return number_to_partition
				return None


if __name__ == "__main__":
					print(F'''{solution() = }''')





def 							__SCREAMING_SNAKE_CASE							(				lowerCAmelCase:  str  ,      lowerCAmelCase:  str )   ->       int:
				if len(lowerCAmelCase ) != len(lowerCAmelCase ):
								raise ValueError("String lengths must match!" )

				_UpperCAmelCase       :		List[Any] 		=    0

				for chara, chara in zip(lowerCAmelCase  ,      lowerCAmelCase ):
								if chara != chara:
												count += 1

				return count


if __name__ == "__main__":
					import doctest

					doctest.testmod()


