

import math
import sys

def 			lowerCamelCase__			(       _a):
	if number != int(_a):
		raise ValueError("the value of input must be a natural number")
	if number < 0:
		raise ValueError("the value of input must not be a negative number")
	if number == 0:
		return 1
	SCREAMING_SNAKE_CASE :   List[str]					  =							[-1] * (number + 1)
	SCREAMING_SNAKE_CASE :   Optional[int]					  =							0
	for i in range(1				,      number + 1):
		SCREAMING_SNAKE_CASE :   str					  =							sys.maxsize
		SCREAMING_SNAKE_CASE :   Dict					  =							int(math.sqrt(_a))
		for j in range(1				,      root + 1):
			SCREAMING_SNAKE_CASE :   Tuple					  =							1 + answers[i - (j**2)]
			SCREAMING_SNAKE_CASE :   int					  =							min(_a				,      _a)
		SCREAMING_SNAKE_CASE :   List[str]					  =							answer
	return answers[number]


if __name__ == "__main__":
			import doctest

			doctest.testmod()



'''simple docstring'''
from math import factorial

UpperCAmelCase_			:  List[str]										=   {str(d): factorial(d) for d in range(1_0)}


def       _lowercase							(					UpperCamelCase__							:       int      ):
 return sum(DIGIT_FACTORIAL[d] for d in str(UpperCamelCase__      )      )


def       _lowercase							(					):
 __A	:		Union[str, Any]	  =      7 * factorial(9      ) + 1
 return sum(i for i in range(3,					UpperCamelCase__      ) if sum_of_digit_factorial(UpperCamelCase__      ) == i      )


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






