package spoj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//import java.util.Scanner;
import java.util.StringTokenizer;
public class ACODE {
static class FastReader
{
public FastReader()
{
}
{
while (st == null || !st.hasMoreElements())
{
try
{
}
{
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt()
{
}
long nextLong()
{
return Long.
parseLong(next
()); }
double nextDouble()
{
return Double.
parseDouble(next
()); }
{
try
{
str = br.readLine();
}
{
e.printStackTrace();
}
return str;
}
}
public static int recursive
(String s
) {
if (s.length()==1)
{
if (s.charAt(0)!='0')
return 1;
if (s.charAt(0)=='0')
return 0;
}
if (s.length()==2)
{
int m = stringToInt(s);
if (m>=10 && m<=26)
{
if (s.charAt(1)!='0')
return 2;
if (s.charAt(1)=='0')
return 1;
}
if (m<10 && m>26)
return 0;
}
int m = stringToInt(s.substring(0, 2));
if (m<10)
return 0;
if (m>=10 && m<=26)
return recursive(s.substring(1))+recursive(s.substring(2));
return recursive(s.substring(1));
}
public static int stringToInt
(String s
) {
int numberAtTens = (int)(s.charAt(0))-48;
int numberAtOnes = (int)(s.charAt(1))-48;
return (10*numberAtTens)+numberAtOnes;
}
public static void main
(String[] args
){ // TODO Auto-generated method stub
FastReader s=new FastReader();
while(!input.equals("0"))
{
System.
out.
println(recursive
(input
)); input = s.next();
if (input.equals("0"))
break;
}
}
}
cGFja2FnZSBzcG9qOwoKaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLy9pbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CmltcG9ydCBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyOwoKcHVibGljIGNsYXNzIEFDT0RFIHsKCQoJc3RhdGljIGNsYXNzIEZhc3RSZWFkZXIKICAgIHsKICAgICAgICBCdWZmZXJlZFJlYWRlciBicjsKICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3Q7CiAKICAgICAgICBwdWJsaWMgRmFzdFJlYWRlcigpCiAgICAgICAgewogICAgICAgICAgICBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcKICAgICAgICAgICAgICAgICAgICAgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgfQogCiAgICAgICAgU3RyaW5nIG5leHQoKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUgKHN0ID09IG51bGwgfHwgIXN0Lmhhc01vcmVFbGVtZW50cygpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0cnkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYnIucmVhZExpbmUoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24gIGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3QubmV4dFRva2VuKCk7CiAgICAgICAgfQogCiAgICAgICAgaW50IG5leHRJbnQoKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQobmV4dCgpKTsKICAgICAgICB9CiAKICAgICAgICBsb25nIG5leHRMb25nKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBMb25nLnBhcnNlTG9uZyhuZXh0KCkpOwogICAgICAgIH0KIAogICAgICAgIGRvdWJsZSBuZXh0RG91YmxlKCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBEb3VibGUucGFyc2VEb3VibGUobmV4dCgpKTsKICAgICAgICB9CiAKICAgICAgICBTdHJpbmcgbmV4dExpbmUoKQogICAgICAgIHsKICAgICAgICAgICAgU3RyaW5nIHN0ciA9ICIiOwogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3RyID0gYnIucmVhZExpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3RyOwogICAgICAgIH0KICAgIH0KCQoJcHVibGljIHN0YXRpYyBpbnQgcmVjdXJzaXZlIChTdHJpbmcgcykKCXsKCQlpZiAocy5sZW5ndGgoKT09MSkKCQkJewoJCQlpZiAocy5jaGFyQXQoMCkhPScwJykKCQkJCXJldHVybiAxOwoJCQlpZiAocy5jaGFyQXQoMCk9PScwJykKCQkJCXJldHVybiAwOwoJCQl9CgkJaWYgKHMubGVuZ3RoKCk9PTIpCgkJewoJCQlpbnQgbSA9IHN0cmluZ1RvSW50KHMpOwoJCQlpZiAobT49MTAgJiYgbTw9MjYpCgkJCXsKCQkJaWYgKHMuY2hhckF0KDEpIT0nMCcpCgkJCQlyZXR1cm4gMjsKCQkJaWYgKHMuY2hhckF0KDEpPT0nMCcpCgkJCQlyZXR1cm4gMTsKCQkJfQoJCQlpZiAobTwxMCAmJiBtPjI2KQoJCQkJcmV0dXJuIDA7CgkJfQoJCWludCBtID0gc3RyaW5nVG9JbnQocy5zdWJzdHJpbmcoMCwgMikpOwoJCWlmIChtPDEwKQoJCQlyZXR1cm4gMDsKCQlpZiAobT49MTAgJiYgbTw9MjYpCgkJCXJldHVybiByZWN1cnNpdmUocy5zdWJzdHJpbmcoMSkpK3JlY3Vyc2l2ZShzLnN1YnN0cmluZygyKSk7CgkJcmV0dXJuIHJlY3Vyc2l2ZShzLnN1YnN0cmluZygxKSk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IHN0cmluZ1RvSW50KFN0cmluZyBzKQoJewoJCWludCBudW1iZXJBdFRlbnMgPSAoaW50KShzLmNoYXJBdCgwKSktNDg7CgkJaW50IG51bWJlckF0T25lcyA9IChpbnQpKHMuY2hhckF0KDEpKS00ODsKCQlyZXR1cm4gKDEwKm51bWJlckF0VGVucykrbnVtYmVyQXRPbmVzOwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpewoJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKCQlGYXN0UmVhZGVyIHM9bmV3IEZhc3RSZWFkZXIoKTsKCQlTdHJpbmcgaW5wdXQ9cy5uZXh0KCk7CgkJd2hpbGUoIWlucHV0LmVxdWFscygiMCIpKQoJCXsKCQlTeXN0ZW0ub3V0LnByaW50bG4ocmVjdXJzaXZlKGlucHV0KSk7CgkJaW5wdXQgPSBzLm5leHQoKTsKCQlpZiAoaW5wdXQuZXF1YWxzKCIwIikpCgkJCWJyZWFrOwoJCX0KCX0KCn0=