#include <bits/stdc++.h>
using namespace std;
vector <int > monedas;
int  memoria [100005];

int  dp ( int  yo, int estoy)
{
    int  res=INT_MAX-5;
    if (yo==0)
    {
        return 0;
    }
    if (yo<6)
        return yo;
    if (yo<=100000 && memoria[yo]!=-1)
        return memoria[yo];
    for (;estoy>=0;estoy--)
    {
        if (monedas [estoy]==yo)
        {
            return 1;
        }
        if (monedas [estoy] < yo)
        {
            if (yo-monedas [estoy]<=100000 && memoria[yo-monedas [estoy]]!=-1)
            {
                res=min (res, memoria[yo-monedas [estoy]]+1);
            }else
                res= min (res, dp (yo-monedas [estoy],estoy)+1);
        }
    }
    if (yo<=100000)
        memoria[yo]=res;
    return res;
}
int main ()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int  c;
    int  res=0;
    memset(memoria,-1,sizeof(memoria));
    cin>>c;
    monedas.push_back(1);
    for (int  i=0, a=9,b=6;i<6;i++,a*=9,b*=6)
    {
        if (i==5)
        {
            monedas.push_back(b);
            continue;
        }
        monedas.push_back(a);
        monedas.push_back(b);
    }
    sort(monedas.begin(),monedas.end());
    cout<<dp(c,monedas.size()-1)<<endl;
    return 0;
}
