/*
TASK:sub
LANG:C++
*/
#include<iostream>
using namespace std;
int brm;
void ok2(int n,int br)
{
 if(n>=9&&(n%9>2||n%9==0))ok2(n%9,br+n/9);
 if(n>=6&&(n%6>2||n%6==0))ok2(n%6,br+n/6);
 if(n>=5&&(n%5>2||n%5==0))ok2(n%5,br+n/5);
 if(n>=3&&(n%3>2||n%3==0))ok2(n%3,br+n/3);
 if(n==0)if(br<brm)brm=br;
}
void ok1(int n,int br)
{
 if(n>=9)
  if(n>=18)ok1(n-(n/18)*9,br+n/18);
  else ok1(n%9,br+n/9);
 if(n>=6)
  if(n>=12)ok1(n-(n/12)*6,br+n/12);
  else ok1(n%6,br+n/6);
 if(n>=5)
  if(n>=10)ok1(n-(n/10)*5,br+n/10);
  else ok1(n%5,br+n/5);
 if(n>=3)
  if(n>=6)ok1(n-(n/6)*3,br+n/6);
  else ok1(n%3,br+n/3);
 if(n==0)if(br<brm)brm=br;
}
int main()
{
 int n;
 cin>>n;
 brm=1000000;
 if(n<15000)ok1(n,0);
  else
  {
   ok2(n,0);
   if(brm==1000000)ok1(n,0);
  }
 if(brm==1000000)cout<<"0"<<endl;
 else cout<<brm<<endl;
 return 0;
}
