#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

string addBigInt(string num1, string num2) {
    string result = "";
    int i = num1.length() - 1;
    int j = num2.length() - 1;
    int carry = 0;

    while (i >= 0 || j >= 0 || carry) {
        int sum = carry;
        if (i >= 0) sum += num1[i--] - '0';
        if (j >= 0) sum += num2[j--] - '0';
        carry = sum / 10;
        result += to_string(sum % 10);
    }
    reverse(result.begin(), result.end());
    return result;
}

int main() {
    string S;
    if (!(cin >> S)) {
        cout << 0 << endl;
        return 0;
    }

    int n = S.length();
    
    if (n == 0 || S[0] == '0') {
        cout << 0 << endl;
        return 0;
    }

    vector<string> dp(n + 1, "0");
    
    dp[0] = "1";
    dp[1] = "1";

    for (int i = 2; i <= n; i++) {
        if (S[i - 1] != '0') {
            dp[i] = addBigInt(dp[i], dp[i - 1]);
        }

        int doubleDigit = (S[i - 2] - '0') * 10 + (S[i - 1] - '0');
        if (doubleDigit >= 10 && doubleDigit <= 26) {
            dp[i] = addBigInt(dp[i], dp[i - 2]);
        }
        
        if (dp[i] == "0") {
            cout << 0 << endl;
            return 0;
        }
    }

    cout << dp[n] << endl;

    return 0;
}