/*
csc -debug D.cs && mono --debug D.exe <<< "RRLRL"
*/

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Reflection;

public class HelloWorld {
    public static void SolveCodeForces() {
        var S = Console.ReadLine();
        var n = S.Length;

        var ans = new int[n];

        var start = 0;
        for (var i = 1; i < n; i++) {
            if (S[i-1] == 'L' && S[i] == 'R') {
                Solve(S, start, i, ans);
                start = i;
            }
        }
        Solve(S, start, n, ans);

        System.Console.WriteLine(ans.Join());
    }

    static void Solve(string S, int start, int endExclusive, int[] ans) {
        var r = 0;
        var l = 0;
        for (var i = start; i < endExclusive; i++)
            if (S[i] == 'R')
                r++;
            else
                l++;

// System.Console.WriteLine(new {start, endExclusive, r, l});
// for (var i = start; i < endExclusive; i++)
//     System.Console.WriteLine(S[i]);
// System.Console.WriteLine("---");

        if (r == 1 && l == 1) {
            for (var i = start; i < endExclusive; i++)
                ans[i] = 1;
            return;
        }

        var a = 0;
        var half = (r + l) / 2;

        if ((r + l) % 2 == 0) {
            a = half;
        }
        else if (r % 2 == 0) {
            a = half;
        }
        else {
            a = half + 1;
        }

        ans[start + r - 1] = a;
        ans[start + r] = r + l - a;
    }

    static Scanner cin = new Scanner();
    static StringBuilder cout = new StringBuilder();

    static public void Main () {
        SolveCodeForces();
        // IncreaseStack(SolveCodeForces);
        // System.Console.Write(cout.ToString());
    }

    public static void IncreaseStack(ThreadStart action, int stackSize = 128000000)
    {
        var thread = new Thread(action, stackSize);
        thread.Start();
        thread.Join();
    }
}

public static class Helpers {
    public static string Join<T>(this IEnumerable<T> arr, string sep = " ") {
        return string.Join(sep, arr);
    }

    public static void Swap<T>(ref T a, ref T b) {
        var tmp = a;
        a = b;
        b = tmp;
    }

    public static T[] CreateArray<T>(int length, Func<int, T> itemCreate) {
        var result = new T[length];
        for (var i = 0; i < result.Length; i++)
            result[i] = itemCreate(i);
        return result;
    }
}

public class Scanner
{
    private string[] line = new string[0];
    private int index = 0;

    public string Next() {
        if (line.Length <= index) {
            line = Console.ReadLine().Split(' ');
            index = 0;
        }
        var res = line[index];
        index++;
        return res;
    }

    public int NextInt() {
        return int.Parse(Next());
    }

    public long NextLong() {
        return long.Parse(Next());
    }

    public ulong NextUlong() {
        return ulong.Parse(Next());
    }

    public string[] Array() {
        line = Console.ReadLine().Split(' ');
        index = line.Length;
        return line;
    }

    public int[] IntArray(int emptyPrefixLen = 0) {
        var array = Array();
        var result = new int[emptyPrefixLen + array.Length];
        for (int i = 0; i < array.Length; i++)
            result[emptyPrefixLen + i] = int.Parse(array[i]);
        return result;
    }

    public long[] LongArray() {
        var array = Array();
        var result = new long[array.Length];
        for (int i = 0; i < array.Length; i++)
            result[i] = long.Parse(array[i]);
        return result;
    }

    public ulong[] UlongArray() {
        var array = Array();
        var result = new ulong[array.Length];
        for (int i = 0; i < array.Length; i++)
            result[i] = ulong.Parse(array[i]);
        return result;
    }
}

Measured memory_bytes: 13440