#include <iostream>
#include <string>
int nv(std::string s)
{
if (s.size() == 1) return 1;
if (s.size() == 2)
{
if (s[0] == '0' ) return 1;
if (s[0] > '3' ) return 1;
if (s[0] == '3')
if(s[1] > '3') return 1;
return 2;
}
std::string temp = s.substr(1);
int sum = nv( temp );
if ( s[0] == '0' ) return sum;
if (s[0] > '3' ) return sum;
if ( s[0] == '3' )
if ( s[0] > '3' ) return sum;
temp = s.substr(2);
sum += nv( temp );
return sum;
}
int main() {
std::string input;
std::getline(std::cin, input);
std::cout << nv(input);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKaW50IG52KHN0ZDo6c3RyaW5nIHMpCnsKCWlmIChzLnNpemUoKSA9PSAxKSByZXR1cm4gMTsKCWlmIChzLnNpemUoKSA9PSAyKQoJewoJCWlmIChzWzBdID09ICcwJyApIHJldHVybiAxOwoJCWlmIChzWzBdID4gJzMnICkgcmV0dXJuIDE7CgkJaWYgKHNbMF0gPT0gJzMnKQoJCQlpZihzWzFdID4gJzMnKSByZXR1cm4gMTsKCQlyZXR1cm4gMjsKCX0KCQoJc3RkOjpzdHJpbmcgdGVtcCA9IHMuc3Vic3RyKDEpOwoJaW50IHN1bSA9IG52KCB0ZW1wICk7CgkKCWlmICggc1swXSA9PSAnMCcgKSByZXR1cm4gc3VtOwoJaWYgKHNbMF0gPiAnMycgKSByZXR1cm4gc3VtOwoJaWYgKCBzWzBdID09ICczJyApCgkJaWYgKCBzWzBdID4gJzMnICkgcmV0dXJuIHN1bTsKCQkKCXRlbXAgPSBzLnN1YnN0cigyKTsKCXN1bSArPSBudiggdGVtcCApOwoJCglyZXR1cm4gc3VtOwp9CgppbnQgbWFpbigpIHsKCQoJc3RkOjpzdHJpbmcgaW5wdXQ7CgkKCXN0ZDo6Z2V0bGluZShzdGQ6OmNpbiwgaW5wdXQpOwoJCglzdGQ6OmNvdXQgPDwgbnYoaW5wdXQpOwoJCglyZXR1cm4gMDsKfQ==