#include <iostream>
#include<cmath>
using namespace std;

int main() {
    string str;

    while (cin >>str) { // 注意 while 处理多个 case
        long long result=0;
        for(int i=str.size()-1;i>=0;i--)
        {
            if(str[i]=='0')
            continue;
            else if(str[i]=='1'||str[i]=='2')//k=str.size-i
            result+=((str[i]-'0')*(pow(2,str.size()-i)-1));
        }
        cout<<result<<endl;
    }
}
// 64 位输出请用 printf("%lld")

应该属于高精度?