


"""simple docstring"""
SCREAMING_SNAKE_CASE :    Union[str, Any]									=				[sum(int(c, 10) ** 2 for c in i.__str__()) for i in range(10_0000)]






def 		lowercase							(     _snake_case						:      int     )     ->int:
	"""simple docstring"""





	__snake_case	:						int						=				0
	while number:
		# Increased Speed Slightly by checking every 5 digits together.
		sum_of_digits_squared += DIGITS_SQUARED[number % 100_000]
		number //= 100_000

	return sum_of_digits_squared


# There are 2 Chains made,
# One ends with 89 with the chain member 58 being the one which when declared first,
# there will be the least number of iterations for all the members to be checked.

# The other one ends with 1 and has only one element 1.

# So 58 and 1 are chosen to be declared at the starting.

# Changed dictionary to an array to quicken the solution
SCREAMING_SNAKE_CASE :    list[bool | None]									=				[None] * 1000_0000
SCREAMING_SNAKE_CASE :    Any									=				True
SCREAMING_SNAKE_CASE :    List[Any]									=				False






def 		lowercase							(     _snake_case						:      int     )     ->bool:
	"""simple docstring"""





	if CHAINS[number - 1] is not None:
		return CHAINS[number - 1]  # type: ignore

	__snake_case	:						int						=				chain(next_number(_snake_case     )     )
	__snake_case	:						List[Any]						=				number_chain

	while number < 10_000_000:
		__snake_case	:						Tuple						=				number_chain
		number *= 10

	return number_chain






def 		lowercase							(     _snake_case						:      int = 10_000_000     )     ->int:
	"""simple docstring"""





	for i in range(1     ,   _snake_case     ):
		if CHAINS[i] is None:
			chain(i + 1     )

	return CHAINS[:number].count(_snake_case     )


if __name__ == "__main__":
			import doctest

			doctest.testmod()
			print(F'{solution() = }')









"""simple docstring"""
# this script reports modified .py files under the desired list of top-level sub-dirs passed as a list of arguments, e.g.:
#   python ./utils/get_modified_files.py utils src tests examples
#
# it uses git to find the forking point and which files were modified - i.e. files not under git won't be considered
# since the output of this script is fed into Makefile commands it doesn't print a newline after the results

import re
import subprocess
import sys


SCREAMING_SNAKE_CASE :    Union[str, Any]									=				subprocess.check_output("""git merge-base main HEAD""".split()).decode("""utf-8""")
SCREAMING_SNAKE_CASE :    Any									=				subprocess.check_output(F'git diff --name-only {fork_point_sha}'.split()).decode("""utf-8""").split()

SCREAMING_SNAKE_CASE :    Union[str, Any]									=				"""|""".join(sys.argv[1:])
SCREAMING_SNAKE_CASE :    int									=				re.compile(rF'^({joined_dirs}).*?\.py$')

SCREAMING_SNAKE_CASE :    str									=				[x for x in modified_files if regex.match(x)]
print(""" """.join(relevant_modified_files), end="""""")





