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 C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>


int min(int a ,int b){
  if(a<b){
    return a;
  }
  return b;
}



int main(){
  int a,b,c=100000,d,x=0,n;
  scanf("%d",&n);

  if(n-59049>=0&&n<93312){
    n-=59049;
    x+=1;
  }
while(n>=46656){
    n-=46656;
    x+=1;
  }
  if(n>=15552){
  while(n>=7776){
      n-=7776;
      x+=1;
    }
  }
  if(n<13122){
  while(n>=7776){
      n-=7776;
      x+=1;
    }
  }
if(n>=13122&&n<15552){
  while(n>=6561){
    n-=6561;
    x+=1;
  }
}
  if(n>=6561){
    n-=6561;
    x+=1;
  }

  while(n<6561&&n>1458){
    n-=1296;
    x+=1;
  }
    while(n<1458&&n>=1296){
      n-=1296;
      x+=1;
    }
if(n>=1458)
  while(n>=729){
    n-=729;
    x+=1;
  }
  while(n<729&&n>=216){
    n-=216;
    x+=1;
  }
while(n<216&&n>=81){
    n-=81;
    x+=1;
  }
while(n<81&&n>=36){
    n-=36;
    x+=1;
  }

for (int i = 0; i < 4; i++) {
  for (int j = 0; j < 9; j++) {
    if(n-9*i-6*j>=0&&n-9*i-6*j<=5){
      a=i+j+n-9*i-6*j;
      c=min(a,c);
    }
  }
}
  x+=c;
  printf("%d",x);
  return 0;
}