




import math
from timeit import timeit







def  lowerCAmelCase  (	UpperCAmelCase       )  ->int:






					"""simple docstring"""






					__magic_name__					:							Dict		   =							0
					__magic_name__					:							Optional[int]		   =							abs(UpperCAmelCase       )
					while True:
										__magic_name__					:							Optional[Any]		   =							n // 10
										digits += 1
										if n == 0:
															break
					return digits







def  lowerCAmelCase  (	UpperCAmelCase       )  ->int:






					"""simple docstring"""






					return 1 if n == 0 else math.floor(math.log(abs(UpperCAmelCase       ),	10       ) + 1       )







def  lowerCAmelCase  (	UpperCAmelCase       )  ->int:






					"""simple docstring"""






					return len(str(abs(UpperCAmelCase       )       )       )







def  lowerCAmelCase  (	)  ->None:






					"""simple docstring"""






					from collections.abc import Callable

					def benchmark_a_function(UpperCAmelCase,	UpperCAmelCase       ) -> None:
										__magic_name__					:							Optional[int]		   =							F'''{func.__name__}({value})'''
										__magic_name__					:							Dict		   =							timeit(F'''__main__.{call}''',	setup='''import __main__'''       )
										print(F'''{call}: {func(UpperCAmelCase       )} -- {timing} seconds'''       )

					for value in (26_2144, 1125_8999_0684_2624, 126_7650_6002_2822_9401_4967_0320_5376):
										for func in (num_digits, num_digits_fast, num_digits_faster):
															benchmark_a_function(UpperCAmelCase,	UpperCAmelCase       )
										print()


if __name__ == "__main__":
				import doctest

				doctest.testmod()
				benchmark()









def  lowerCAmelCase  (	UpperCAmelCase       )  ->int:






					"""simple docstring"""






					return n * (2 * n - 1)







def  lowerCAmelCase  (	UpperCAmelCase       )  ->bool:






					"""simple docstring"""






					__magic_name__					:							Any		   =							(1 + 24 * n) ** 0.5
					return ((1 + root) / 6) % 1 == 0







def  lowerCAmelCase  (	UpperCAmelCase = 144       )  ->int:






					"""simple docstring"""






					__magic_name__					:							Optional[int]		   =							start
					__magic_name__					:							int		   =							hexagonal_num(UpperCAmelCase       )
					while not is_pentagonal(UpperCAmelCase       ):
										n += 1
										__magic_name__					:							Optional[int]		   =							hexagonal_num(UpperCAmelCase       )
					return num


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



