let s = stdin.ReadLine()

let ans =
    let rIntervals, lIntervals =
        let rIntervals = ResizeArray<int * int> []
        let lIntervals = ResizeArray<int * int> []

        let mutable left = ('R', 0)
        for i in 1 .. s.Length - 1 do
            if fst left = 'R' && s.[i] = 'L' then
                rIntervals.Add((snd left, i - 1))
                left <- ('L', i)
                if i = s.Length - 1 then
                    lIntervals.Add((i, i))
            elif fst left = 'L' then
                if s.[i] = 'R' then
                    lIntervals.Add((snd left, i - 1))
                    left <- ('R', i)
                elif i = s.Length - 1 then
                    lIntervals.Add((snd left, i))

        [ for i in rIntervals -> i ], [ for i in lIntervals -> i ]

    List.zip rIntervals lIntervals
    |> List.collect (
        fun ((rl, rr), (ll, lr)) ->
            [rl .. lr]
            |> List.map (
                fun i ->
                    if i = rr then
                        ([rl .. rr].Length + 1) / 2 + [ll .. lr].Length / 2 |> string
                    elif i = ll then
                        ([rl .. rr].Length) / 2 + ([ll .. lr].Length + 1) / 2 |> string
                    else
                        0 |> string ))
    |> List.toSeq
    |> String.concat " "

ans
|> stdout.WriteLine