#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#include <bits/stdc++.h>
#define owo(i,a, b) for(int i=(a);i<(b); ++i)
#define uwu(i,a, b) for(int i=(a)-1; i>=(b); --i)
#define senpai push_back
#define ttgl pair<int, int>
#define ayaya cout<<"ayaya~"<<endl
 
using namespace std;
using ll = long long;
using ld = long double;
ll MOD = 1000000007;
const ll root = 3;
ll binpow(ll a,ll b){ll res=1;while(b){if(b&1)res=(res*a)%MOD;a=(a*a)%MOD;b>>=1;}return res;}
ll modInv(ll a){return binpow(a, MOD-2);}
const int INF = 0x3f3f3f3f;
const int NINF = 0xc0c0c0c0;
const ll INFLL = 0x3f3f3f3f3f3f3f3f;
const ll NINFLL = 0xc0c0c0c0c0c0c0c0;
const int mxN = 200001;
string s;
int n;
vector<int> res;
vector<int> arr;
bool dp[mxN][4];
bool solve(int x) {
    res.clear();
    owo(i, 0, n) {
        if(i&1) {
            res.senpai(arr[i]+x);
        }else {
            int curr = arr[i];
            if(i==0 || i==n-1)curr-=x;
            else curr-=x+1;
            if(curr < 0 || !dp[curr][x])return 0;
            while(curr) {
                owo(sub, 2, x+2) {
                    if(dp[curr-sub][x]) {
                        curr-=sub;
                        res.senpai(sub-1);
                        break;
                    }
                }
            }
        }
    }
    return 1;
}
void killthyself() {
    cout<<"-1\n";
    exit(0);
}
int main() {
    //freopen("file.in", "r", stdin);
    //freopen("file.out", "w", stdout);
    mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
    cin.tie(0)->sync_with_stdio(0);
    cin>>s;
    dp[0][1] = dp[0][2] = dp[0][3] = 1;
    owo(rotate, 1, 4) {
        owo(j, 0, mxN) {
            owo(k, 2, rotate+2) {
                if(dp[j][rotate] && j + k < mxN) {
                    dp[j+k][rotate] = 1;
                }
            }
        }
    }
    int curr = 1;
    owo(i, 1, s.size()) {
        if(s[i]==s[i-1]) {
            curr++;
        }else {
            arr.senpai(curr);
            curr = 1;
        }
    }
    arr.senpai(curr);
    n = arr.size();
    if(s[0]=='#' || s[s.size()-1]=='#') {
        if(s[0]!='#' || s[s.size()-1]!='#') {
            killthyself();
        }
        owo(i, 0, n) {
            if(i&1) {
                if(arr[i]!=1) killthyself();
            }else {
                res.senpai(arr[i]);
            }
        }
        cout<<res.size()<<"\n";
        for(int k: res) {
            cout<<k<<" ";
        }
        cout<<"\n";
        exit(0);
    }
    owo(i, 1, 4) {
        if(solve(i)) {
            //cout<<i<<" hi\n";
            cout<<res.size()<<"\n";
            for(int k: res) {
                cout<<k<<" ";
            }
            cout<<"\n";
            exit(0);
        }
    }
    cout<<"-1\n";
    exit(0);
    return 0;
}