#include <stdio.h>#include <string.h>#define MAX 50000int judge(char a,char b){ if(a=='0') return 0; if(a>'2') return 0; if(a=='2'&&b>'6') return 0; return 1;}int main(void){ char num[MAX]; int dp[MAX]; while (scanf("%s",num) != EOF && num[0]!='0') { int len = strlen(num); memset(dp,0,sizeof(dp)); dp[0]=1; for (int i=1;i<len;i++) { if(num[i]=='0') { if(i>=2) dp[i] = dp[i-2]; else dp[i] = 1; } else if(judge(num[i-1],num[i])) { if(i>=2) dp[i]=dp[i-1]+dp[i-2]; else dp[i] = dp[i-1]+1; } else dp[i] = dp[i-1]; } printf("%dn",dp[len-1]); } return 0;}