



'''simple docstring'''






def        snake_case_   (	lowerCAmelCase_						)->						int:





       '''simple docstring'''


       if not isinstance(lowerCAmelCase_			,  lowerCAmelCase_						) or number < 0:
              raise ValueError("""Input must be a non-negative integer"""						)

       _UpperCAmelCase    :		List[str]     	=					number & ~(number - 1)
       _UpperCAmelCase    :		str     	=					0
       while intermediate:
              intermediate >>= 1
              index += 1
       return index - 1


if __name__ == "__main__":
   import doctest

   doctest.testmod(verbose=True)








'''simple docstring'''






from __future__ import annotations

A_				:					Tuple							=      """Alexander Joslin"""




def        snake_case_   (	lowerCAmelCase_						)->						int:





       '''simple docstring'''


       if number <= 0:
              _UpperCAmelCase    :		Union[str, Any]     	=					F'''n must be greater than 0. Got n = {number}'''
              raise ValueError(lowerCAmelCase_						)

       _UpperCAmelCase    :		List[str]     	=					[number + 1] * (number + 1)

       # starting position
       _UpperCAmelCase    :		Dict     	=					0
       for i in range(1			,  lowerCAmelCase_						):
              _UpperCAmelCase    :		int     	=					min(table[i + 1]			,  table[i] + 1						)
              # check if out of bounds
              if i * 2 <= number:
                     _UpperCAmelCase    :		Dict     	=					min(table[i * 2]			,  table[i] + 1						)
              # check if out of bounds
              if i * 3 <= number:
                     _UpperCAmelCase    :		Tuple     	=					min(table[i * 3]			,  table[i] + 1						)
       return table[number]


if __name__ == "__main__":
   import doctest

   doctest.testmod()



