Problem:
Score : 300 points

Problem Statement

To make it difficult to withdraw money, a certain bank allows its customers to withdraw only one of the following amounts in one operation:

1 yen (the currency of Japan)

6 yen, 6^2(=36) yen, 6^3(=216) yen, ...

9 yen, 9^2(=81) yen, 9^3(=729) yen, ...

At least how many operations are required to withdraw exactly N yen in total?

It is not allowed to re-deposit the money you withdrew.

Constraints

1 \leq N \leq 100000

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

If at least x operations are required to withdraw exactly N yen in total, print x.

Sample Input 1

127

Sample Output 1

4

By withdrawing 1 yen, 9 yen, 36(=6^2) yen and 81(=9^2) yen, we can withdraw 127 yen in four operations.

Sample Input 2

3

Sample Output 2

3

By withdrawing 1 yen three times, we can withdraw 3 yen in three operations.

Sample Input 3

44852

Sample Output 3

16

Solution in Python (3.4.3) (judge verdict: Accepted)


n = int(input())
queue = [[n,0]]
count = 0
maxi = 10000
ax = [1000 for i in range(1000)]

while queue:
    ato,count = queue.pop(0)
    if ato <= 1000:
        if ax[ato-1] > count:
            ax[ato-1] = count
        else:continue

    if ato == 0:
        maxi = min(maxi,count)
        continue
    a = ato
    b = ato
    counta = 0
    countb = 0
    countc = 0
    if ato >= 6:
        while a >= 9:
            a = a//9
            counta +=1
        while b >=6:
            b = b//6
            countb +=1
    else:
        countc = ato
    if counta > 0:
        queue.insert(0,[ato-9**counta,count+1])
    if countb >0:
        queue.insert(0,[ato-6**countb,count+1])
    if countc > 0:
        queue.insert(0,[0, count + ato])

print(maxi)