#include <bits/stdc++.h>
using namespace std;
const int MAX = 1000000;
int dp[MAX][10];
int pre[MAX][10];
int mdig[MAX];
long long maxdig(long long n) {
  long long dig = 0;
  while (n) {
    dig = max(n % 10, dig);
    n /= 10;
  }
  return dig;
}
int main() {
  long long n, i, j;
  mdig[0] = 0;
  for (i = 1; i < MAX; i++) {
    j = i % 10;
    mdig[i] = mdig[i / 10];
    if (j > mdig[i]) mdig[i] = j;
  }
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      dp[i][j] = 0;
    }
  }
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      pre[i][j] = i;
    }
  }
  int dig = maxdig(10);
  for (i = 10; i < MAX; i++) {
    dig = mdig[i];
    for (j = 0; j < 10; j++) {
      int tdig = dig;
      if (j > tdig) tdig = j;
      dp[i][j] = dp[i - tdig][j] + 1;
      pre[i][j] = pre[i - tdig][j];
    }
  }
  while (cin >> n) {
    long long ans = 0;
    if (n == 1000000000000LL) {
      ans++;
      n--;
    }
    while (n / MAX) {
      dig = mdig[(n / MAX)];
      j = n % MAX;
      ans += dp[j][dig];
      n = n / MAX * MAX + pre[j][dig];
      ans++;
      n -= max(mdig[(n / MAX)], mdig[n % MAX]);
      ans++;
      n -= max(mdig[(n / MAX)], mdig[n % MAX]);
    }
    if (n >= 10) {
      ans += dp[n][0];
      n = pre[n][0];
    }
    while (n) {
      ans++;
      n -= mdig[(n)];
    }
    cout << ans << endl;
  }
  return 0;
}
