






'''simple docstring'''
__lowerCAmelCase				=[sum(int(c, 10) ** 2 for c in i.__str__()) for i in range(10_0000)]

def 				a						( _UpperCAmelCase			)					->					Union[str, Any]:






					"""simple docstring"""







					a_						= 0
					while number:
										# Increased Speed Slightly by checking every 5 digits together.
										sum_of_digits_squared += DIGITS_SQUARED[number % 1_0_0_0_0_0]
										number //= 1_0_0_0_0_0

					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
__lowerCAmelCase				=[None] * 1000_0000
__lowerCAmelCase				=True
__lowerCAmelCase				=False

def 				a						( _UpperCAmelCase			)					->					Dict:






					"""simple docstring"""







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

					a_						= chain(next_number(__lowerCamelCase			)			)
					a_						= number_chain

					while number < 1_0_0_0_0_0_0_0:
										a_						= number_chain
										number *= 1_0

					return number_chain

def 				a						( _UpperCAmelCase = 1_0_0_0_0_0_0_0			)					->					Tuple:






					"""simple docstring"""







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

					return CHAINS[:number].count(__lowerCamelCase			)


if __name__ == "__main__":
						import doctest

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





'''simple docstring'''






import warnings
from functools import wraps
from typing import Callable





def lowerCamelCase__     (		__lowerCamelCase			:				Callable				):







   '''simple docstring'''




   @wraps(__lowerCamelCase				)
   def _inner_fn(*__lowerCamelCase			:				int			,       **__lowerCamelCase			:				Optional[Any]				):
      warnings.warn(
          (f"'{fn.__name__}' is experimental and might be subject to breaking changes in the future.")			,       __lowerCamelCase			,       )
      return fn(*__lowerCamelCase			,       **__lowerCamelCase				)

   return _inner_fn

