#include <iostream>
#include <vector>
#include <string>
using namespace std;
long long check(vector<long long> &ans,int i,string st)
{
if(i<=0) return 1;
if(ans[i]==-1)
{
long long b1,b2;b1=0;b2=0;
if(st[i]!='0')
b1=check(ans,i-1,st)+1;
if(i!=0)
{
if(st[i-1]=='1')
b2=check(ans,i-2,st);
else if(st[i-1]=='2'&&(st[i]>='0'&&st[i]<='6'))
b2=check(ans,i-2,st);
}
ans[i]=b1+b2;
}
return ans[i];
}
int main() {
string st;
cin>>st;
int n=st.length();
vector<long long> ans;
for(int i=0;i<n;i++)
ans.push_back(-1);
long long a=check(ans,n-1,st);
cout<<a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpsb25nIGxvbmcgY2hlY2sodmVjdG9yPGxvbmcgbG9uZz4gJmFucyxpbnQgaSxzdHJpbmcgc3QpCnsKCWlmKGk8PTApIHJldHVybiAxOwoJaWYoYW5zW2ldPT0tMSkKCXsKCQlsb25nIGxvbmcgYjEsYjI7YjE9MDtiMj0wOwoJCWlmKHN0W2ldIT0nMCcpCgkJYjE9Y2hlY2soYW5zLGktMSxzdCkrMTsKCQlpZihpIT0wKQoJCXsKCQkJaWYoc3RbaS0xXT09JzEnKQoJCQliMj1jaGVjayhhbnMsaS0yLHN0KTsKCQkJZWxzZSBpZihzdFtpLTFdPT0nMicmJihzdFtpXT49JzAnJiZzdFtpXTw9JzYnKSkKCQkJYjI9Y2hlY2soYW5zLGktMixzdCk7CgkJfQoJCWFuc1tpXT1iMStiMjsKCX0KCXJldHVybiBhbnNbaV07Cn0KaW50IG1haW4oKSB7CglzdHJpbmcgc3Q7CgljaW4+PnN0OwoJaW50IG49c3QubGVuZ3RoKCk7Cgl2ZWN0b3I8bG9uZyBsb25nPiBhbnM7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJYW5zLnB1c2hfYmFjaygtMSk7Cglsb25nIGxvbmcgYT1jaGVjayhhbnMsbi0xLHN0KTsKCWNvdXQ8PGE7CglyZXR1cm4gMDsKfQ==