#include <bits/stdc++.h>
#define SZ(X) ((int)(X).size())
#define ALL(X) (X).begin(), (X).end()
#define rep(I, N) for (int I = 1; I <= (N); ++I)
#define repp(I, N) for (int I = 0; I < (N); ++I)
#define FOR(I, A, B) for (int I = (A); I <= (B); ++I)
#define FORR(I, A, B) for (int I = (A); I >= (B); I--)
#define SORT_UNIQUE(c) (sort(c.begin(), c.end()), c.resize(distance(c.begin(), unique(c.begin(), c.end()))))
#define GET_POS(c, x) (lower_bound(c.begin(), c.end(), x) - c.begin())
#define MP make_pair
#define PB push_back
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define LEN(X) strlen(X)
#define F first
#define S second
using namespace std;
const int N = 2e5 + 5;
const double eps = 1e-7;
const int mod = 1e9 + 7;
typedef long long LL;
typedef unsigned long long ULL;
typedef long double LD;
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef vector<LL> VL;
typedef vector<PII> VPII;
typedef pair<LL, LL> PLL;
typedef vector<PLL> VPLL;
LL gcd(LL a, LL b) { return b > 0 ? gcd(b, a % b) : a; }
LL ksm(LL a, LL b)
{
    LL ans = 1;
    while (b)
    {
        if (b & 1)
            ans = ans * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return ans % mod;
}
char s[N];
map<int, int> mp;
int main()
{
    scanf("%s", s + 1);
    int n = strlen(s + 1);
    for (int i = 1; i <= n;)
    {
        if (s[i] == 'R')
        {
            int l = 0;
            while (i <= n && (s[i] == 'R'))
            {
                i++;
                l++;
            }
            int posl = i - 1;
            int posr = i;
            int r = 0;
            while (i <= n && (s[i] == 'L'))
            {
                i++;
                r++;
            }
            int sum = l + r;
            {
                if (sum % 2 == 0)
                {
                    mp[posl] = sum / 2;
                    mp[posr] = sum / 2;
                }
                else
                {
                    int x = min(l, r);
                    int lx = l;
                    int rx = r;
                    l = sum / 2;
                    r = sum / 2 + 1;
                    if (lx < rx)
                    {
                        if (x % 2)
                        {
                            mp[posl] = r;
                            mp[posr] = l;
                        }
                        else
                        {
                            mp[posl] = l;
                            mp[posr] = r;
                        }
                    }
                    else
                    {
                        //cout << 1;
                        if (x % 2)
                        {
                            mp[posl] = l;
                            mp[posr] = r;
                        }
                        else
                        {
                            mp[posl] = r;
                            mp[posr] = l;
                        }
                    }
                }
            }
        }
    }
    for (int i = 1; i <= n; i++)
    {
        if (mp[i])
            cout << mp[i] << ' ';
        else
            cout << 0 << ' ';
    }
    cout << endl;
    return 0;
}


Measured memory_bytes: 5248