





A_												=     [sum(int(c, 1_0) ** 2 for c in i.__str__()) for i in range(1_0_0_0_0_0)]





def    __UpperCamelCase      (    a) ->int:
					lowerCamelCase__       =       0
					while number:
										# Increased Speed Slightly by checking every 5 digits together.
										sum_of_digits_squared += DIGITS_SQUARED[number % 100000]
										number //= 100000

					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
A_												=     [None] * 1_0_0_0_0_0_0_0
A_												=     True
A_												=     False





def    __UpperCamelCase      (    a) ->bool:

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

					lowerCamelCase__       =       chain(next_number(a))
					lowerCamelCase__       =       number_chain

					while number < 10000000:
										lowerCamelCase__       =       number_chain
										number *= 10

					return number_chain





def    __UpperCamelCase      (    a = 10000000) ->int:
					for i in range(1,     a):
										if CHAINS[i] is None:
															chain(i + 1)

					return CHAINS[:number].count(a)


if __name__ == "__main__":
						import doctest

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








def    __UpperCamelCase      (    a = 100) ->int:
					lowerCamelCase__       =       (n * (n + 1) // 2) ** 2
					lowerCamelCase__       =       n * (n + 1) * (2 * n + 1) // 6
					return sum_cubes - sum_squares


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

