

from __future__ import annotations

SCREAMING_SNAKE_CASE_						=					'Alexander Joslin'

def 							__SCREAMING_SNAKE_CASE							( lowerCAmelCase:     int       )      ->				int:

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

				_UpperCAmelCase				:						Dict       						=			[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				:						int       						=			min(table[i * 2]     ,					table[i] + 1       )
								# check if out of bounds
								if i * 3 <= number:
												_UpperCAmelCase				:						int       						=			min(table[i * 3]     ,					table[i] + 1       )
				return table[number]


if __name__ == "__main__":
					import doctest

					doctest.testmod()








def     __SCREAMING_SNAKE_CASE      (     lowercase_    ,   lowercase_					)				->		int:

    """simple docstring"""


    __UpperCamelCase     						=  1.0
    for i in range(1    ,   r + 1					):
        ret *= (n + 1 - i) / i
    return round(lowercase_					)




def     __SCREAMING_SNAKE_CASE      (     lowercase_					)				->		int:

    """simple docstring"""


    return choose(8 + n    ,   lowercase_					) + choose(9 + n    ,   lowercase_					) - 10




def     __SCREAMING_SNAKE_CASE      (     lowercase_					)				->		int:

    """simple docstring"""


    return sum(non_bouncy_exact(lowercase_					) for i in range(1    ,   n + 1					)					)




def     __SCREAMING_SNAKE_CASE      (     lowercase_ = 1_00					)				->		int:

    """simple docstring"""


    return non_bouncy_upto(lowercase_					)


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






