import math
from timeit import timeit






def  __lowerCamelCase						(		lowerCAmelCase__      ):
       lowerCAmelCase__	      =   0
       lowerCAmelCase__	      =   abs(lowercase__      )
       while True:
              lowerCAmelCase__	      =   n // 1_0
              digits += 1
              if n == 0:
                     break
       return digits






def  __lowerCamelCase						(		lowerCAmelCase__      ):
       return 1 if n == 0 else math.floor(math.log(abs(lowercase__      )      ,    1_0      ) + 1      )






def  __lowerCamelCase						(		lowerCAmelCase__      ):
       return len(str(abs(lowercase__      )      )      )






def  __lowerCamelCase						(		):
       from collections.abc import Callable

       def benchmark_a_function(lowerCAmelCase__      ,    lowerCAmelCase__      ) -> None:
              lowerCAmelCase__	      =   F"""{func.__name__}({value})"""
              lowerCAmelCase__	      =   timeit(F"""__main__.{call}"""      ,    setup='import __main__'      )
              print(F"""{call}: {func(lowercase__      )} -- {timing} seconds"""      )

       for value in (2_6_2_1_4_4, 1_1_2_5_8_9_9_9_0_6_8_4_2_6_2_4, 1_2_6_7_6_5_0_6_0_0_2_2_8_2_2_9_4_0_1_4_9_6_7_0_3_2_0_5_3_7_6):
              for func in (num_digits, num_digits_fast, num_digits_faster):
                     benchmark_a_function(lowercase__      ,    lowercase__      )
              print()


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    benchmark()





from typing import TYPE_CHECKING

from ...utils import _LazyModule


_lowercase				:					List[Any]     					={"""tokenization_bert_japanese""": ["""BertJapaneseTokenizer""", """CharacterTokenizer""", """MecabTokenizer"""]}


if TYPE_CHECKING:
	from .tokenization_bert_japanese import BertJapaneseTokenizer, CharacterTokenizer, MecabTokenizer

else:
	import sys

	_lowercase				:					Union[str, Any]     					=_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)

