#include<bits/stdc++.h>
using namespace std;
#define int long long
int escFlag = 0;
int rec(int n,string &s,vector<int>&dp){
//Pruning
//Base case
if(n==-1)
return 1;
//Cache check
if(dp[n]!=-1)
return dp[n];
// Pick the current
int ans = rec(n-1,s,dp);
if(n-1>=0){
string numStr = "";
numStr+=s[n-1];
numStr+=s[n];
int dig2 = stoi(numStr);
if(dig2<=26){
ans+= rec(n-2,s,dp);
}
}
return dp[n]=ans;
}
void solve(){
string str;
cin>>str;
if(str=="0")
{
escFlag++;
return;
}
int n = str.length();
vector<int>dp(n,-1);
cout<<rec(n-1,str,dp)<<'\n';
}
signed main(){
//Fast IO
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// int t;cin>>t; while(t--)
while(escFlag==0)solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKCmludCBlc2NGbGFnID0gMDsKaW50IHJlYyhpbnQgbixzdHJpbmcgJnMsdmVjdG9yPGludD4mZHApewoKCS8vUHJ1bmluZwoKCS8vQmFzZSBjYXNlCglpZihuPT0tMSkKCQlyZXR1cm4gMTsgCgoJLy9DYWNoZSBjaGVjawoJaWYoZHBbbl0hPS0xKQoJCQlyZXR1cm4gZHBbbl07CgoJLy8gUGljayB0aGUgY3VycmVudCAKCWludCBhbnMgPSByZWMobi0xLHMsZHApOwoKCWlmKG4tMT49MCl7CgoJCXN0cmluZyBudW1TdHIgPSAiIjsKCQludW1TdHIrPXNbbi0xXTsKCQludW1TdHIrPXNbbl07CgoJCWludCBkaWcyID0gc3RvaShudW1TdHIpOwoKCQlpZihkaWcyPD0yNil7CgkJCWFucys9IHJlYyhuLTIscyxkcCk7CgkJfQoJfQoKCXJldHVybiBkcFtuXT1hbnM7CgkKfQoKCnZvaWQgc29sdmUoKXsKCglzdHJpbmcgc3RyOyAKCWNpbj4+c3RyOwoKCWlmKHN0cj09IjAiKQoJewkKCQllc2NGbGFnKys7CgkJcmV0dXJuOwoJfQoKCWludCBuID0gc3RyLmxlbmd0aCgpOwoJdmVjdG9yPGludD5kcChuLC0xKTsKCWNvdXQ8PHJlYyhuLTEsc3RyLGRwKTw8J1xuJzsKfQoKCgpzaWduZWQgbWFpbigpewogICAgCiAgICAvL0Zhc3QgSU8KICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IAogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKCgogICAgLy8gaW50IHQ7Y2luPj50OyB3aGlsZSh0LS0pCgogICAgd2hpbGUoZXNjRmxhZz09MClzb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9