/*
TASK: sub
LANG: C
*/
//Rumen Hristov Hristov
#include <stdio.h>

int a[131072];

/*//MEMOIZATION 
int solve(int x)
{
    if (x == 0) return 0;
    if (a[x] != -1) return a[x];
    
    int i;
    int ans = (1<<30);
    int tmp;
    
    for (i=1;i<=x;i*=10)
    {
        if (i == 1)
        {
            if ( (x%10) != 0 )
            tmp = solve ( x - (x%10) ) + 1;
        }
        else
        {
            if ( ((x/i)%10) != 0 )
                tmp = solve ( x - ((x/i)%10) ) + 1;
            else
            tmp = (1<<30);
        }
        
        if ( tmp < ans )
        {
            ans = tmp;
        }
    }
    
    printf ("%d %d\n",x,ans);
    
  //  if (ans < 0)
  //  getchar();
    
    a[x] = ans;
    
    return ans;
}
*/

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

int solve (int n)
{
    a[0] = 0;
    int i,j;
    
    for (i=1;i<10;i++)
    {
        a[i] = 1;//init
    }
    
    for (i=10;i<=n;i++)
    {
        if ( (i%10) != 0 )        
        a[i] = a[ i - (i%10) ] + 1;
        else
        a[i] = (1<<30);
        
        for (j=10;j<=i;j*=10)
        {
            if ( ((i/j)%10) != 0 )
            a[i] = min ( a[i] , a[ i - ((i/j)%10) ] + 1 );
        }
        
      //  printf ("%d -> %d\n",i,a[i]);
    }
    
    return a[n];
}

int main()
{
    int n;
    
    scanf ("%d",&n);
    int i;
    
    printf ("%d\n",solve(n));
    
    return 0;
}
