#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
//初始情况下,并不确定输入的skew数的位数
//由上可知,在skew数位数不确定的情况下,根据所给公式: x[k] = x[k] * (2 ^ (k + 1) - 1) 可知,即使使用long long(2 ^ 63 - 1)亦无法全部表示skew数对应的十进制形式
//得出结论:处理超大整数要当作字符串来处理
string skew;
//c++中string类型的相关内容及用法和函数
//用while循环来决定skew数的位数
while (cin >> skew)
{ // cin >> skew 按空格/换行分割输入 getline(cin, skew) 按换行分割输入
reverse(skew.begin(), skew.end());//反转字符串,使最低位对应索引 i=0。
int res = 0;
for (int i = 0; i < skew.size(); i++)
res += (skew[i] - '0') * ((2 << i) - 1);//2的次方相当于左移
cout << res << endl;
}
//输入多组数据,每组数据包含一个skew数
//怎么判断输入已经结束
}
// 64 位输出请用 printf("%lld")