#include <iostream>
#include <vector>
#include <string>
using namespace std;

// 将二进制字符串转换为十进制数
long long binaryToDecimal(const string& binaryStr) {
    long long result = 0;
    for (char c : binaryStr) {
        result = result * 2 + (c - '0');
    }
    return result;
}

int main() {
    string s;
    cin >> s;
    vector<long long> result;
    
    int currentLength = 1;  // 当前要取的子串长度
    int index = 0;          // 当前在字符串中的位置
    
    // 依次取不同长度的子串
    while (index + currentLength <= s.size()) {
        // 取出当前长度的子串
        string sub = s.substr(index, currentLength);
        // 转换为十进制数
        long long num = binaryToDecimal(sub);
        result.push_back(num);
        
        // 更新位置和长度
        index += currentLength;
        currentLength++;
        
        // 如果长度超过10,重新从1开始
        if (currentLength > 10) {
            currentLength = 1;
        }
    }
    
    // 输出结果
    cout << result.size() << endl;
    for (int i = 0; i < result.size(); i++) {
        cout << result[i];
        if (i != result.size() - 1) {
            cout << " ";
        }
    }
    cout << endl;
    
    return 0;
}