#define _USE_MATH_DEFINES
#include <algorithm>
#include <cstdio>
#include <functional>
#include <iostream>
#include <cfloat>
#include <climits>
#include <cstring>
#include <cmath>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <time.h>
#include <vector>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> i_i;
typedef pair<ll, int> ll_i;
typedef pair<double, int> d_i;
typedef pair<ll, ll> ll_ll;
typedef pair<double, double> d_d;
struct edge { int u, v; ll w; };

ll MOD = 1000000007;
ll _MOD = 1000000009;
double EPS = 1e-10;

char s[80001];

int main() {
	for (;;) {
		scanf("%s", s);
		if (s[0] == '0') break;
		int n = strlen(s);
		vector<int> mod(n + 1);
		vector< vector<int> > a(n + 1);
		a[0] = vector<int>(11);
		for (int i = 1; i <= n; i++) {
			int x = s[i - 1] - '0';
			if (i % 2) x = 11 - x;
			mod[i] = (mod[i - 1] + x) % 11;
			a[i] = a[i - 1];
			a[i][mod[i]]++;
		}
		int cnt = 0;
		for (int i = 0; i <= n; i++)
			if (s[i] != '0')
				cnt += a[n][mod[i]] - a[i][mod[i]];
		cout << cnt << endl;
	}
}