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.

Examples

Input

127


Output

4


Input

3


Output

3


Input

44852


Output

16
import sys
from collections import deque
import copy
import math
def get_read_func(fileobject):
    if fileobject == None :
        return raw_input
    else:
        return fileobject.readline

def main():
    if len(sys.argv) > 1:
        f = open(sys.argv[1])
    else:
        f = None
    read_func = get_read_func(f);
    input_raw = read_func().strip().split()
    [N] = [long(input_raw[0])]
    coin_list = [1]
    for i in range(1, N):
        if N >= 6 ** i:
            coin_list.append(6 ** i)
        else:
            break

    for i in range(1, N):
        if N >= 9 ** i:
            coin_list.append(9 ** i)
        else:
            break

    dp = [[0 for i in range(N + 1)] for i in  range(len(coin_list) + 1)]
    for j in range(N + 1):
        dp[0][j] = j
    min_dpN = N
    for i in range(1, len(coin_list)):
        for j in range(N + 1):
            if j - coin_list[i] >= 0:
                dp[i][j] = min(dp[i - 1][j], dp[i][j - coin_list[i]] + 1)
            else:
                dp[i][j] = dp[i - 1][j]
        min_dpN = min(dp[i][N], min_dpN)
    print min_dpN

if __name__ == '__main__':
    main()
