X = int(input())

d = [0] * 30001

# 2~X까지 연산을 사용하는 횟수의 최솟값 저장, 바텀업 방법
for i in range(2, X + 1):
    # 현재의 수에서 1을 빼는 경우 
    d[i] = d[i-1] + 1
    # 현재의 수에서 2로 나누는 경우, 1을 뺐을 경우와 비교
    if i % 2 == 0:
        d[i] = min(d[i], d[i//2] + 1)
    # 현재의 수에서 3으로 나누는 경우, 1을 뺐을 경우와 비교 
    elif i % 3 == 0:
        d[i] = min(d[i], d[i//3] + 1)
    # 현재의 수에서 5로 나누는 경우, 1을 뺐을 경우와 비교 
    elif i % 5 == 0:
        d[i] = min(d[i], d[i//5] + 1)

print(d[X])
386d5ad86cf95abcce48093dedae2dbb4b26a265
<mask token>

<mask token>
for i in range(2, X + 1):
    d[i] = d[i - 1] + 1
    if i % 2 == 0:
        d[i] = min(d[i], d[i // 2] + 1)
    elif i % 3 == 0:
        d[i] = min(d[i], d[i // 3] + 1)
    elif i % 5 == 0:
        d[i] = min(d[i], d[i // 5] + 1)
print(d[X])

X = int(input())
d = [0] * 30001
for i in range(2, X + 1):
    d[i] = d[i - 1] + 1
    if i % 2 == 0:
        d[i] = min(d[i], d[i // 2] + 1)
    elif i % 3 == 0:
        d[i] = min(d[i], d[i // 3] + 1)
    elif i % 5 == 0:
        d[i] = min(d[i], d[i // 5] + 1)
print(d[X])

X = int(input())

d = [0] * 30001

# 2~X까지 연산을 사용하는 횟수의 최솟값 저장, 바텀업 방법
for i in range(2, X + 1):
    # 현재의 수에서 1을 빼는 경우 
    d[i] = d[i-1] + 1
    # 현재의 수에서 2로 나누는 경우, 1을 뺐을 경우와 비교
    if i % 2 == 0:
        d[i] = min(d[i], d[i//2] + 1)
    # 현재의 수에서 3으로 나누는 경우, 1을 뺐을 경우와 비교 
    elif i % 3 == 0:
        d[i] = min(d[i], d[i//3] + 1)
    # 현재의 수에서 5로 나누는 경우, 1을 뺐을 경우와 비교 
    elif i % 5 == 0:
        d[i] = min(d[i], d[i//5] + 1)

print(d[X])