

'''simple docstring'''






from math import factorial

lowerCAmelCase__      		=			{str(digit): factorial(digit) for digit in range(10)}


def 	_A  (					A__   ):






 """simple docstring"""



 if not isinstance(A__  ,       A__   ):
  raise TypeError('''Parameter number must be int'''   )

 if number < 0:
  raise ValueError('''Parameter number must be greater than or equal to 0'''   )

 # Converts number in string to iterate on its digits and adds its factorial.
 return sum(DIGIT_FACTORIAL[digit] for digit in str(A__   )   )


def 	_A  (					A__ = 60  ,       A__ = 1000000   ):






 """simple docstring"""



 if not isinstance(A__  ,       A__   ) or not isinstance(A__  ,       A__   ):
  raise TypeError('''Parameters chain_length and number_limit must be int'''   )

 if chain_length <= 0 or number_limit <= 0:
  raise ValueError(
      '''Parameters chain_length and number_limit must be greater than 0'''   )

 # the counter for the chains with the exact desired length
 __lowercase													=				0
 # the cached sizes of the previous chains
 __lowercase													=				{}

 for start_chain_element in range(1  ,       A__   ):
  # The temporary set will contain the elements of the chain
  __lowercase													=				set()
  __lowercase													=				0

  # Stop computing the chain when you find a cached size, a repeating item or the
  # length is greater then the desired one.
  __lowercase													=				start_chain_element
  while (
      chain_element not in chain_sets_lengths
      and chain_element not in chain_set
      and chain_set_length <= chain_length
  ):
   chain_set.add(A__   )
   chain_set_length += 1
   __lowercase													=				digit_factorial_sum(A__   )

  if chain_element in chain_sets_lengths:
   chain_set_length += chain_sets_lengths[chain_element]

  __lowercase													=				chain_set_length

  # If chain contains the exact amount of elements increase the counter
  if chain_set_length == chain_length:
   chains_counter += 1

 return chains_counter


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 print(f'{solution()}')




'''simple docstring'''






def 	_A  (					A__   ):






 """simple docstring"""



 if not nums:  # Makes sure that the list is not empty
  raise ValueError('''List is empty'''   )

 __lowercase													=				sum(A__   ) / len(A__   )  # Calculate the average
 return sum(abs(x - average   ) for x in nums   ) / len(A__   )


if __name__ == "__main__":
 import doctest

 doctest.testmod()

