#include"bits/stdc++.h"
using namespace std;
int main(void) {
cin.tie(nullptr)->sync_with_stdio(false);
string s;
cin>>s;
s = " " + s;
vector<int> prefix(s.length(), 0);
for(int i = 1; i <= s.length()-1; ++i) {
prefix[i] = prefix[i-1] + int(s[i] - '0');
prefix[i] %= 3;
}
vector<int> pos[3];
pos[0].push_back(0);
long long ans = 0;
int num = 0;
for(int j = 1; j <= s.length()-1; ++j) {
int digit = s[j] - '0';
num = num * 10 + digit;
num %= 97;
if(num == 0) {
int need = prefix[j];
int cnt = lower_bound(pos[need].begin(), pos[need].end(), j) - pos[need].begin();
ans += cnt;
}
pos[prefix[j]].push_back(j);
}
cout<<ans;
}
I2luY2x1ZGUiYml0cy9zdGRjKysuaCIgCnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAppbnQgbWFpbih2b2lkKSB7CiAgICBjaW4udGllKG51bGxwdHIpLT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgc3RyaW5nIHM7IAogICAgY2luPj5zOyAKICAgIHMgPSAiICIgKyBzOyAKICAgIHZlY3RvcjxpbnQ+IHByZWZpeChzLmxlbmd0aCgpLCAwKTsgCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHMubGVuZ3RoKCktMTsgKytpKSB7CiAgICAgICAgcHJlZml4W2ldID0gcHJlZml4W2ktMV0gKyBpbnQoc1tpXSAtICcwJyk7ICAKICAgICAgICBwcmVmaXhbaV0gJT0gMzsgCiAgICB9CiAgICB2ZWN0b3I8aW50PiBwb3NbM107IAogICAgcG9zWzBdLnB1c2hfYmFjaygwKTsgICAKICAgIGxvbmcgbG9uZyBhbnMgPSAwOyAKICAgIGludCBudW0gPSAwOyAKICAgIGZvcihpbnQgaiA9IDE7IGogPD0gcy5sZW5ndGgoKS0xOyArK2opIHsKICAgICAgICBpbnQgZGlnaXQgPSBzW2pdIC0gJzAnOyAKICAgICAgICBudW0gPSBudW0gKiAxMCArIGRpZ2l0OyAKICAgICAgICBudW0gJT0gOTc7IAogICAgICAgIGlmKG51bSA9PSAwKSB7CiAgICAgICAgICAgIGludCBuZWVkID0gcHJlZml4W2pdOyAKICAgICAgICAgICAgaW50IGNudCA9IGxvd2VyX2JvdW5kKHBvc1tuZWVkXS5iZWdpbigpLCBwb3NbbmVlZF0uZW5kKCksIGopIC0gcG9zW25lZWRdLmJlZ2luKCk7ICAKICAgICAgICAgICAgYW5zICs9IGNudDsgCiAgICAgICAgfQogICAgICAgIHBvc1twcmVmaXhbal1dLnB1c2hfYmFjayhqKTsgCiAgICB9CiAgICBjb3V0PDxhbnM7IAp9