import std.stdio, std.string, std.range, std.conv, std.array, std.algorithm, std.math, std.typecons;

void main() {
    auto S = readln.chomp;
    
    auto result = new long[S.length];
    foreach (i; 0..S.length) {
        // i番目の子供が10^100回後にどこにいるか
        if (S[i] == 'L') {
            foreach_reverse(j; 0..i) {
                if (S[j] == 'R') {
                    // このRまでにi-j回移動している
                    if ((i-j) % 2 == 0) {
                        // 残り移動回数が偶数回なら、このマスで終わる
                        result[j]++;
                    } else {
                        // 奇数回なら反対側で終わる
                        result[j+1]++;
                    }
                    break;
                }
            }
        } else {
            foreach (j; i..S.length) {
                if (S[j] == 'L') {
                    // このLまでにj-i回移動している
                    if ((j-i) % 2 == 0) {
                        // 残り移動回数が偶数回なら、このマスで終わる
                        result[j]++;
                    } else {
                        // 奇数回なら反対側で終わる
                        result[j-1]++;
                    }
                    break;
                }
            }
        }
    }
    result.map!(to!string).join(" ").writeln;
}

