#include<bits/stdc++.h>
#define FASTIO() cin.sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)
#define D(x) #x,x
#define ll long long
#define fi first
#define se second
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pll pair<ll,ll>
#define MP make_pair
#define pb push_back
using namespace std;
template<class T> void _R(T &x) { cin >> x; }
void _R(int &x) { scanf("%d", &x); }
void _R(ll &x) { scanf("%lld", &x); }
void _R(double &x) { scanf("%lf", &x); }
void _R(char &x) { scanf("%c", &x); }
void _R(char *x) { scanf("%s", x); }
void R() {}
template<class T, class... U> void R(T &head, U &... tail) { _R(head); R(tail...); }
template<class T> void _W(const T &x) { cout << x; }
void _W(const unsigned int &x){printf("%u", x); }
void _W(const int &x) { printf("%d", x); }
void _W(const ll &x) { printf("%lld", x); }
void _W(const double &x) { printf("%.16f", x); }
void _W(const char &x) { putchar(x); }
void _W(const char *x) { printf("%s", x); }
template<class T,class U> void _W(const pair<T,U> &x) {_W(x.fi); putchar(' '); _W(x.se);}
template<class T> void _W(const vector<T> &x) { for (auto i = x.begin(); i != x.end(); _W(*i++)) if (i != x.cbegin()) putchar(' '); }
void W() {}
template<class T, class... U> void W(const T &head, const U &... tail) { _W(head); putchar(sizeof...(tail) ? ' ' : '\n'); W(tail...); }
string s;
int n,a[100005],b[100005],cnt;
int check(int k)
{
    vector<int> ans;
    for(int i = 1; i <= cnt; ++i)
    {
        if(b[i]==1)
            ans.pb(a[i]+k);
        else if(i==1 || i==cnt)
        {
            int sz = a[i]-1-k;
            if(sz<0) continue;
            if(sz==0) return 0;
            if(k==1 && sz%2==0) return 0;
            if(sz%2==0)
                ans.pb(2), sz -= 2;
            else
                ans.pb(1), sz -= 1;
            for(int j = 1; j <= sz/2; ++j)
                ans.pb(1);
        }
        else
        {
            int sz = a[i]-2-k;
            if(sz<0) continue;
            if(sz==0) return 0;
            if(k==1 && sz%2==0) return 0;
            if(sz%2==0)
                ans.pb(2), sz -= 2;
            else
                ans.pb(1), sz -= 1;
            for(int j = 1; j <= sz/2; ++j)
                ans.pb(1);
        }
    }
    cerr << "! k " << k << endl;
    W(ans.size());
    W(ans);
    return 1;
}
int main()
{
    cin >> s;
    n = s.size();
    char f = ' ';
    int len = 0;
    for(int i = 0; i < n; ++i)
    {
        if(s[i]!=f)
        {
//            W('!',i);
            if(f=='_')
            {
                a[++cnt] = len;
                b[cnt] = 0;
            }
            else if(f=='#')
            {
                a[++cnt] = len;
                b[cnt] = 1;
            }
            len = 1;
        }
        else
        {
            ++len;
        }
        f = s[i];
    }
    if(len)
    {
        a[++cnt] = len;
        b[cnt] = s[n-1]=='_'?0:1;
    }
//    for(int i = 1; i <= cnt; ++i)
//        printf("%d ",a[i]);
//    cout << endl;
//    for(int i = 1; i <= cnt; ++i)
//        printf("%d ",b[i]);
//    cout << endl;
    int k = n+1;
    for(int i = 1; i <= cnt; ++i)
    {
         if(b[i]==0)
         {
             if(i==1 || i==cnt)
                k = min(k,a[i]);
            else
                k = min(k,a[i]-1);
         }
    }
    cerr << "cnt " << cnt << endl;
    if(b[1]==1 || b[cnt]==1) k = 0;
    cerr << "@ k " << k << endl;
    if(k==n+1)
    {
        W(1);
        W(n);
        return 0;
    }
    else if(k==n)
    {
        W(0);
        puts("");
        return 0;
    }
    else if(k==0)
    {
        int f = 1;
        for(int i = 1; i <= cnt; ++i)
        {
            if(i==1 || i==cnt)
            {
                if(b[i]==0) f = 0;
            }
            else
            {
                if(b[i]==0 && a[i] > 1) f = 0;
            }
        }
        if(f==0)
        {
            W(-1);
        }
        else
        {
            int ans = 0;
            for(int i = 1; i <= cnt; ++i)
                if(b[i]==1) ++ans;
            W(ans);
            for(int i = 1; i <= cnt; ++i)
                if(b[i]==1)
                    printf("%d ",a[i]);
        }
        return 0;
    }
    if(check(k)==1) return 0;
    if(check(1)==1) return 0;
    if(k>=2)
    {
        if(check(2)==1)
            return 0;
    }
    W(-1);
    return 0;
}







