#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp>
#include <functional> // for less

#pragma GCC optimize ("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize ("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

#define FASTIO ios::sync_with_stdio(0); cin.tie(0);
#define show(x) cout << #x << " = " << x << "\n"
#define mem( a , b ) memset( a , b , sizeof a )
#define popcnt(x) __builtin_popcount(x)
#define all(x) x.begin() , x.end()
#define mod(x,m) ((x%m + m )%m)
#define SZ(a) (int)a.size()
#define ll  long long
#define ld  long double
#define vii vector  <ll>
#define dqi deque   <ll>
#define sii set     <ll>
#define vpi vector  <pii>
#define mii map     <ll,ll>
#define pii pair    <ll,ll>
#define pi  pair    <int,int>
#define pb  push_back
#define F   first
#define S   second
#define L   length()
#define OO  (ll)1e18
#define lSOne(x)(x&-x)
#define EPS 1e-20
using namespace std;
using namespace __gnu_pbds;
void ONLINE__JUDGE();

typedef tree<ll, null_type, less<ll>, rb_tree_tag,
tree_order_statistics_node_update> ordered_set;
pii swapii( pii pr ){ return { pr.S , pr.F }; }
ll binEXP( ll x , ll pw , ll MOD = LLONG_MAX );
int dx[] = {  0 ,  0 , -1 , +1 , -1 , +1 , -1 , +1 };
int dy[] = { -1 , +1 ,  0 ,  0 , -1 , +1 , +1 , -1 };

const ll MOD = 1e9 + 7;
const ll MAX = 2e6 + 7;

string s;
vector<pair < char , int > > vec;

int main()
{
    FASTIO //ONLINE__JUDGE();

    cin >> s;
    for ( char i : s ){

        if ( vec.empty() ){ vec.pb({i , 1}); }
        else{
            if ( i == vec.back().F ) vec.back().S++;
            else{
                vec.pb( {i , 1} );
            }
        }
    }

    pair < char , int > lst = {-1 , -1};
    if ( SZ(vec)&1 ){
        lst = vec.back(); vec.pop_back();
    }

    for ( int i = 0; i < SZ(vec); i += 2 ){
        if ( (vec[i].S+vec[i+1].S)&1 ){
            for ( int j = 0; j < vec[i].S-1; ++j ) cout << 0 << " ";

            bool ok = max( vec[i].S-1 , vec[i+1].S-1 )%2 == 0;

            if ( ok ){
                if ( vec[i].S > vec[i+1].S ){
                    cout << (vec[i].S+vec[i+1].S)/2 +1 << " " << (vec[i].S+vec[i+1].S)/2 << " ";
                }
                else{
                    cout << (vec[i].S+vec[i+1].S)/2 << " " << (vec[i].S+vec[i+1].S)/2 + 1 << " ";
                }
            }
            else{
                if ( vec[i].S <= vec[i+1].S ){
                    cout << (vec[i].S+vec[i+1].S)/2 +1 << " " << (vec[i].S+vec[i+1].S)/2 << " ";
                }
                else{
                    cout << (vec[i].S+vec[i+1].S)/2 << " " << (vec[i].S+vec[i+1].S)/2 + 1 << " ";
                }
            }
            for ( int j = 0; j < vec[i+1].S-1; ++j ) cout << 0 << " ";
        }
        else{
            for ( int j = 0; j < vec[i].S-1; ++j ) cout << 0 << " ";
            cout <<  (vec[i].S+vec[i+1].S)/2 << " " << (vec[i].S+vec[i+1].S)/2 << " ";
            for ( int j = 0; j < vec[i+1].S-1; ++j ) cout << 0 << " ";
        }
    }

    if ( lst.F != -1 && lst.S != -1 ){
        if ( lst.F == 'R' ){
            for ( int i = 0; i < lst.S-1; ++i ) cout << 0 << " ";
            cout << lst.S;
        }
        else{
            cout << lst.S;
            for ( int i = 0; i < lst.S-1; ++i ) cout << 0 << " ";
        }
    }
    return 0;
}

void ONLINE__JUDGE()
{
    #ifndef ONLINE_JUDGE
    freopen( "inp.c"         , "r" , stdin  );
    //freopen( "OutPut.txt"   , "w" , stdout );
    #endif // ONLINE_JUDGE
}

ll binEXP( ll x , ll pw , ll MOD )
{ ll res=1; while(pw>0){ pw%2 ? res *= x : 0; x *= x; x%=MOD; pw /= 2; res%= MOD; } return res%=MOD; }


Measured memory_bytes: 1480