N = int(eval(input()))



dp = [0]*(N+100001)

for i in range(99999):

    dp[i] = 10**10



for i in range(100000,N+100001):

    dp[i] = min(dp[i-1] + 1,

                dp[i-6] + 1,

                dp[i-9] + 1,

                dp[i-36] +1,

                dp[i-81] + 1,

                dp[i-216] + 1,

                dp[i-729] + 1,

                dp[i-1296] + 1,

                dp[i-6561] + 1,

                dp[i-7776] + 1,

                dp[i-46656] + 1,

                dp[i-59049] + 1)



print((dp[N+99999]))
# Python3 (3.4.3)

import sys

input = sys.stdin.readline



# -------------------------------------------------------------

# function

# -------------------------------------------------------------





# -------------------------------------------------------------

# main

# -------------------------------------------------------------

N = int(eval(input()))



# dp[i+100000] : i 円を引き出すのに必要な最小回数 

dp = [0]*(N+100010)

# dp[99999] までを大きな数で初期化しておく

for i in range(100000):

    dp[i] = 10**10



# dp[100000] : 0円を引き出すのに必要な最小回数 = 0 で初期化済み

# dp[100001] : 1円を引き出すのに必要な最小回数 から処理していく

for i in range(100001,N+100010):

    dp[i] = min(dp[i-1] + 1,

                dp[i-6] + 1,

                dp[i-9] + 1,

                dp[i-36] +1,

                dp[i-81] + 1,

                dp[i-216] + 1,

                dp[i-729] + 1,

                dp[i-1296] + 1,

                dp[i-6561] + 1,

                dp[i-7776] + 1,

                dp[i-46656] + 1,

                dp[i-59049] + 1)

 

print((dp[N+100000]))
N = int(eval(input()))
dp = [0] * (N + 100001)
for i in range(99999):
    dp[i] = 10**10
for i in range(100000, N + 100001):
    dp[i] = min(
        dp[i - 1] + 1,
        dp[i - 6] + 1,
        dp[i - 9] + 1,
        dp[i - 36] + 1,
        dp[i - 81] + 1,
        dp[i - 216] + 1,
        dp[i - 729] + 1,
        dp[i - 1296] + 1,
        dp[i - 6561] + 1,
        dp[i - 7776] + 1,
        dp[i - 46656] + 1,
        dp[i - 59049] + 1,
    )
print((dp[N + 99999]))

# Python3 (3.4.3)
import sys

input = sys.stdin.readline
# -------------------------------------------------------------
# function
# -------------------------------------------------------------
# -------------------------------------------------------------
# main
# -------------------------------------------------------------
N = int(eval(input()))
# dp[i+100000] : i 円を引き出すのに必要な最小回数
dp = [0] * (N + 100010)
# dp[99999] までを大きな数で初期化しておく
for i in range(100000):
    dp[i] = 10**10
# dp[100000] : 0円を引き出すのに必要な最小回数 = 0 で初期化済み
# dp[100001] : 1円を引き出すのに必要な最小回数 から処理していく
for i in range(100001, N + 100010):
    dp[i] = min(
        dp[i - 1] + 1,
        dp[i - 6] + 1,
        dp[i - 9] + 1,
        dp[i - 36] + 1,
        dp[i - 81] + 1,
        dp[i - 216] + 1,
        dp[i - 729] + 1,
        dp[i - 1296] + 1,
        dp[i - 6561] + 1,
        dp[i - 7776] + 1,
        dp[i - 46656] + 1,
        dp[i - 59049] + 1,
    )
print((dp[N + 100000]))

+# Python3 (3.4.3) +import sys + +input = sys.stdin.readline +# function +# main -dp = [0] * (N + 100001) -for i in range(99999): +# dp[i+100000] : i 円を引き出すのに必要な最小回数 +dp = [0] * (N + 100010) +# dp[99999] までを大きな数で初期化しておく +for i in range(100000): -for i in range(100000, N + 100001): +# dp[100000] : 0円を引き出すのに必要な最小回数 = 0 で初期化済み +# dp[100001] : 1円を引き出すのに必要な最小回数 から処理していく +for i in range(100001, N + 100010): -print((dp[N + 99999])) +print((dp[N + 100000]))