#include <bits/stdc++.h>
using namespace std;
inline bool isvowel(char c) {
  c = tolower(c);
  if (c == 'a' || c == 'e' || c == 'i' || c == 'y' || c == 'o' || c == 'u')
    return 1;
  return 0;
}
const double eps = 0.000001;
const long double pi = acos(-1);
const int maxn = 1e7 + 9;
const int mod = 1e9 + 7;
const long long MOD = 1e18 + 9;
const long long INF = 1e18 + 123;
const int inf = 2e9 + 11;
const int mxn = 1e6 + 9;
const int N = 6e5 + 123;
const int M = 11;
const int pri = 997;
const int Magic = 2101;
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};
int n, m, k;
long long dp[M][M][M];
long long ls[M][M][M];
int nxt_st[M][M][M][M];
int nxt_pos[M][M][M][M];
int nxt_num[M][M][M][M];
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  string s;
  cin >> s;
  n = (int)(s.size());
  long long ans = 0;
  for (long long cur = 0; cur <= 10; cur++)
    for (long long st = 0; st <= 10; st++)
      for (long long num = 0; num <= 10; num++)
        for (long long pos = 0; pos <= 10; pos++) {
          int nxt_start = (st + num) % M;
          int nxt_posi = (cur + nxt_start) % M;
          for (int c = st; c != pos; c = (c + 1) % M) {
            (nxt_posi += c) %= M;
          }
          int nxt_numb = 0;
          for (int i = 0; i < num; i++) {
            (nxt_numb += (st + i)) %= M;
          }
          nxt_st[cur][st][num][pos] = nxt_start;
          nxt_pos[cur][st][num][pos] = nxt_posi;
          nxt_num[cur][st][num][pos] = nxt_numb;
        }
  for (int i = 0; i < n; i++) {
    memcpy(ls, dp, sizeof dp);
    memset(dp, 0, sizeof dp);
    int cur = s[i] - '0';
    if (cur != 0) dp[0][10][cur]++;
    for (long long st = 0; st <= 10; st++)
      for (long long num = 0; num <= 10; num++)
        for (long long pos = cur + 1; pos <= 10; pos++) {
          int nxt_start_sv = nxt_st[cur][st][num][pos];
          int nxt_pos_sv = nxt_pos[cur][st][num][pos];
          int nxt_num_sv = nxt_num[cur][st][num][pos];
          dp[nxt_start_sv][nxt_num_sv][nxt_pos_sv] += ls[st][num][pos];
        }
    for (long long a = 0; a <= 10; a++)
      for (long long b = 0; b <= 10; b++)
        for (long long c = 0; c <= 10; c++) {
          ans += dp[a][b][c];
        }
  }
  cout << ans << '\n';
  return 0;
}
