class Solution {
public:
   int solve(string nums) {
        nums=nums;
        vector<pair<int,int>>dp(nums.length()+1,{0,0});
        if(nums[0]=='0')return 0;
        else dp[0].first=1;
        for(int i=1;i<nums.length();i++)
        {
            if(nums[i]!='0')
            {
                dp[i].first=dp[i-1].first+dp[i-1].second;
                if(nums[i-1]>'2'||nums[i-1]=='0')dp[i].second=0;
                else if(nums[i-1]=='2'&&nums[i]>'6')dp[i].second=0;
                else dp[i].second=dp[i-1].first;
            }
            else
            {
                dp[i].first=0;
                if(nums[i-1]!='0'&&nums[i-1]<'3')dp[i].second=dp[i-1].first;
                else dp[i].second=0;
            }
        }
        return dp[nums.length()-1].first+dp[nums.length()-1].second;
    }
};