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

ans
|> String.concat " "
|> stdout.WriteLine