#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define rrep(i, n) for (int i = (int)(n)-1; i >= 0; --i)
#define debug(x) cerr << #x << " = " << x << "\n"
#define debugv(x) rep(i, x.size()) cerr << x[i] << (i == x.size() - 1 ? "\n" : " ")
#define all(x) x.begin(), x.end()
#define int long long
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int INF = ((1LL << 30) + (1LL << 29));
const int MOD = 1000000007;

//=============================
int N, M, K;
string S, T;
vector<int> A;
vector<int> B;
//=============================
void input()
{
    cin >> S;
}
//=============================
void func() {}

void add(vector<pii> &v, int l, int r){
    v.push_back(make_pair(l,r));
}
int diff(int a, int b)
{
    return min(abs(a - b), abs(b - a));
}
//=============================
void solve()
{
    // S : L or R
    // S[0] == 'R', S[-1] == 'L'
    int N = S.size();
    vector<int> subv;
    int ans[N] = {};
    enum State
    {
        STATE_INIT = 0,
        STATE_GOTR = 1,
        STATE_GOTL = 2,
        STATE_CALC = 3,
    };
    State state = STATE_INIT;
    int rcount,lcount;
    char R='R';
    char L='L';
    int i=0;
    int begin_index = 0;
    vector<pii> lr;
    for( ; i<N ; ++i){
        switch (state)
        {
        case STATE_INIT:
            begin_index = i;
            rcount=lcount=0;
            
            if (S[i]==R){
                state = STATE_GOTR;
                rcount++;
            }
            break;
        case STATE_GOTR:
            if (S[i]==L){
                state = STATE_GOTL;
                lcount++;
            }
            else {
                rcount++;
            }
            break;
        case STATE_GOTL:
            if (S[i]==R){
                add(lr, lcount,rcount);
                lcount=0;
                rcount=1;
                state = STATE_GOTR;
            }
            else {
                lcount++;
            }
            break;
        // case STATE_CALC:
        //     debug("need to calc");
        //     // calc here
        //     for(int a = 0; a < lcount+rcount; ++a){
        //         int ind = begin_index+a;

                
        //         ans[ind+rcount-1] += (lcount+rcount)/2;
        //         ans[ind+rcount] += (lcount+rcount)/2;
        //     }
        //     if (S[i]==L){
        //         rcount=lcount=1;
        //         state = STATE_INIT;
        //     }
        //     else {
        //         rcount=1;lcount=0;
        //         state = STATE_GOTR;
        //     }
        //     begin_index = i+1;
        //     break;
        }
        // debug(i);
        // debug(state);
        // debug(rcount);
        // debug(lcount);
        // debug(begin_index);
    }
    add(lr,lcount,rcount);
    
    int id = 0;
    for(auto x : lr){
        int f = x.first;
        int s = x.second;
        int n = id+f+s;
        int br = s-1;
        int bl = s;
        for(int i=0; i<f+s; ++i){
            int now = id+i;
            if (diff(i,br)%2 == 0){
                ans[id+br]++;
            }
            else {
                ans[id+bl]++;
            }
        }
        id = n;
    }
    rep(i,N){
        cout<<ans[i]<<(i==N-1 ? "\n" : " ");
    }
}
//=============================
signed main()
{
    input();
    solve();
    return 0;
}

Measured memory_bytes: 2296