#include <stdio.h>
#define MAXLINE 1000
int way;
int beforeway;
int cway(int data);
void cycle(int s[],int i);
int main(){
int n;
while(scanf("%d",&n)&&(n>0)){
int c;
c=cway(n);
printf("%d\n",c);
}
return 0;
}
int cway(int data){
extern way;
extern beforeway;
way=0;
beforeway=1;
int i;
int s[MAXLINE];
for(i=1;data/10!=0;i++){
s[i]=data%10;
data/=10;
}
for(;i>1;i--){
int c;
if((c=s[i]*10+s[i-1])>=10&&c<=26){
beforeway*=2;
way=beforeway+way;
int copybeforeway=beforeway;
cycle(s,i);
i--;
beforeway=copybeforeway;
cycle(s,i);
i++;
}else{
}
}
}
int j;
j=way;
way=0;
beforeway=1;
return j;
}
void cycle(int s[],int i){
for(;i>1;i--){
int c;
if((c=s[i]*10+s[i-1])>=10&&c<=26){
beforeway*=2;
way=beforeway+way;
int copybeforeway=beforeway;
cycle(s,i);
i--;
beforeway=copybeforeway;
cycle(s,i);
i++;
}else{
}
}
}
#define MAXLINE 1000
int way;
int beforeway;
int cway(int data);
void cycle(int s[],int i);
int main(){
int n;
while(scanf("%d",&n)&&(n>0)){
int c;
c=cway(n);
printf("%d\n",c);
}
return 0;
}
int cway(int data){
extern way;
extern beforeway;
way=0;
beforeway=1;
int i;
int s[MAXLINE];
for(i=1;data/10!=0;i++){
s[i]=data%10;
data/=10;
}
for(;i>1;i--){
int c;
if((c=s[i]*10+s[i-1])>=10&&c<=26){
beforeway*=2;
way=beforeway+way;
int copybeforeway=beforeway;
cycle(s,i);
i--;
beforeway=copybeforeway;
cycle(s,i);
i++;
}else{
}
}
}
int j;
j=way;
way=0;
beforeway=1;
return j;
}
void cycle(int s[],int i){
for(;i>1;i--){
int c;
if((c=s[i]*10+s[i-1])>=10&&c<=26){
beforeway*=2;
way=beforeway+way;
int copybeforeway=beforeway;
cycle(s,i);
i--;
beforeway=copybeforeway;
cycle(s,i);
i++;
}else{
}
}
}