import java.io.*;

public class Main {
    public static int[] dp;
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        dp = new int[n+1];
        
        System.out.println(calc(n));
    }
    
    public static int calc(int n) {
        if(dp[n]>0 || n==1) { return dp[n]; }
        
        if(n%6==0) {
            dp[n] = Math.min(calc(n-1), Math.min(calc(n/3), calc(n/2)))+1;
            return dp[n];
        } else if(n%3==0) {
            dp[n] = Math.min(calc(n/3), calc(n-1))+1;
            return dp[n];
        } else if(n%2==0) {
            dp[n] = Math.min(calc(n/2), calc(n-1))+1;
            return dp[n];
        } else {
            dp[n] = calc(n-1)+1;
            return dp[n];
        }
    }
}

'Problem Solving > BOJ' 카테고리의 다른 글

[Silver 3] 11727번 2×n 타일링 2  (0) 2022.03.28
[Silver 3] 11726번 2×n 타일링  (0) 2022.03.28
[Gold 3] 1918번 후위 표기식  (0) 2022.03.28
[Silver 5] 11576번 Base Conversion  (0) 2022.03.25
[Silver 5] 11653번 소인수분해  (0) 2022.03.25