# 1로 만들기 import sys input = sys.stdin.readline def solution(): n = int(input().rstrip()) dp = [float('inf')] * (n+1) dp[n] = 0 for i in range(n-1, 0, -1): way1 = dp[i*3] if i*3 <= n else float('inf') way2 = dp[i*2] if i*2 <= n else float('inf') way3 = dp[i+1] if i+1 <= n else float('inf') dp[i] = min(way1+1, way2+1, way3+1) print(dp[1]) return solution() """ 걸린 시간: 8분 시간 복잡도: n개의 dp 테이블을 채워야하기 때문에 O(n)이다. 해설: 현재 보는 수까지 오는 방법을 생각해봤을 때 3가지 방법이 있고, 거기서 최소 값에 +1을 한 것이 현재 보는 수까지 온 최단 경로이다. 범위 조건만 잘 설정해서 진행하면 끝 """