import core.bitop, std.bitmanip;
import core.checkedint;
import std.algorithm, std.functional;
import std.array, std.container;
import std.bigint;
import std.conv;
import std.math, std.numeric;
import std.range, std.range.interfaces;
import std.stdio, std.string;
import std.typecons;

void main()
{
    auto s = readln.chomp;
    
    int[] sinks;
    sinks ~= 0;
    foreach (i; 0 .. s.length - 1) {
        if (s[i] == 'R' && s[i+1] == 'L') { sinks ~= i.to!int; }
    }
    sinks ~= s.length.to!int;
    
    debug { sinks.writeln; }
    
    auto ans = new int[] (s.length);
    int j = 0;
    foreach (i; 0 .. s.length) {
        if (i > sinks[j+1]) { ++j; }
        
        int goToSink = s[i] == 'L' ? sinks[j] : sinks[j+1];
        int dist = i.to!int - goToSink;
        int finalField = dist % 2 == 0 ? goToSink : goToSink + 1;
        ans[finalField] += 1;
        
        debug { writeln(i, ' ', j, ' ', finalField); }
    }
    
    foreach (i; 0 .. s.length) {
        if (i > 0) { write(" "); }
        write(ans[i]);
    }
    
    writeln();
}