


def     __lowerCAmelCase						(							snake_case	:    str						,      snake_case	:    bool = False )       ->							str:

   if not isinstance(snake_case						,      snake_case ):
      __lowerCamelCase:				str     =	f'Expected string as input, found {type(snake_case )}'
      raise ValueError(snake_case )
   if not isinstance(snake_case						,      snake_case ):
      __lowerCamelCase:				List[Any]     =	f'Expected boolean as use_pascal parameter, found {type(snake_case )}'
      raise ValueError(snake_case )

   __lowerCamelCase:				Dict     =	input_str.split("""_""" )

   __lowerCamelCase:				Union[str, Any]     =	0 if use_pascal else 1

   __lowerCamelCase:				Optional[int]     =	words[start_index:]

   __lowerCamelCase:				int     =	[word[0].upper() + word[1:] for word in words_to_capitalize]

   __lowerCamelCase:				Optional[int]     =	"""""" if use_pascal else words[0]

   return "".join([initial_word, *capitalized_words] )


if __name__ == "__main__":
   from doctest import testmod

   testmod()






def     __lowerCAmelCase						(							snake_case	:    int = 1000000 )       ->							int:
   __lowerCamelCase:				Union[str, Any]     =	set(range(3						,      snake_case						,      2 ) )
   primes.add(2 )
   for p in range(3						,      snake_case						,      2 ):
      if p not in primes:
         continue
      primes.difference_update(set(range(p * p						,      snake_case						,      snake_case ) ) )

   __lowerCamelCase:				Any     =	[float(snake_case ) for n in range(limit + 1 )]

   for p in primes:
      for n in range(snake_case						,      limit + 1						,      snake_case ):
         phi[n] *= 1 - 1 / p

   return int(sum(phi[2:] ) )


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


