
'''simple docstring'''





def   A			(							A_				:       Dict     ,				A_				:       str							):
						if len(str(A_							)							) == 1 or len(str(A_							)							) == 1:
												return a * b

						snake_case							:  Union[str, Any]			=     max(len(str(A_							)							)     ,				len(str(A_							)							)							)
						snake_case							:  Tuple			=     ma // 2

						snake_case,       snake_case							:  List[Any]			=     divmod(A_     ,				10**ma							)
						snake_case,       snake_case							:  Any			=     divmod(A_     ,				10**ma							)

						snake_case							:  str			=     karatsuba(A_     ,				A_							)
						snake_case							:  Optional[Any]			=     karatsuba((aa + aa)     ,				(ba + ba)							)
						snake_case							:  List[Any]			=     karatsuba(A_     ,				A_							)

						return (z * 10 ** (2 * ma)) + ((y - z - x) * 10 ** (ma)) + (x)

def   A			(							):
						print(karatsuba(15463     ,				23489							)							)


if __name__ == "__main__":
						main()



'''simple docstring'''





import math
from timeit import timeit

def   A			(							A_				:       int							):
						snake_case							:  List[str]			=     0
						snake_case							:  Any			=     abs(A_							)
						while True:
												snake_case							:  List[Any]			=     n // 10
												digits += 1
												if n == 0:
																		break
						return digits

def   A			(							A_				:       int							):
						return 1 if n == 0 else math.floor(math.log(abs(A_							)     ,				10							) + 1							)

def   A			(							A_				:       int							):
						return len(str(abs(A_							)							)							)

def   A			(							):
						from collections.abc import Callable

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

						for value in (262144, 1125899906842624, 1267650600228229401496703205376):
												for func in (num_digits, num_digits_fast, num_digits_faster):
																		benchmark_a_function(A_     ,				A_							)
												print()


if __name__ == "__main__":
						import doctest

						doctest.testmod()
						benchmark()

