int IfIn(char n)//字符合不合规
{
    int i = (int) n;
    if(i>='0'+0&&i<='0'+9)
        return 1;
    else
        return 0;
}


int IfIn1(char* n)//1位字符可能的组合
{
    int i = (int) (*n);
    if(i>'0'+0&&i<='0'+9)
        return 1;
    else
        return 0;
}

int IfIn2(char* n)//2位字符可能的组合
{
    int i;
    if( !( IfIn(n[0])&&IfIn(n[1])) )
        return 0;
    i=((int)n[0]-'0')*10+((int)n[1]-'0');
    if(n[0]=='0')
        return 0;
    if(i>26)
        return 0;
    else
        return 1;
    
}

int solve(char* nums ) {
    int len =strlen(nums);
    int i,l1,l2;
    int count;
    if(len==0||nums[0]=='0')
        return 0;
    if (len==1&&IfIn1(nums))
        return 1;
    if(len==2)
       return (IfIn2(nums)+IfIn1(nums+1)*IfIn1(nums));
    
    l1=IfIn1(nums);
    l2=(IfIn2(nums)+IfIn1(nums+1)*IfIn1(nums));
    for(i=2;i<len;i++)
    {
        count = l1*(IfIn2(nums+i-1))+l2*(IfIn1(nums+i));
        l1 = l2;
        l2 = count;
    }
    return count;
    
}