let s = stdin.ReadLine().ToCharArray()

let appearPatterns =
    let rec convertS i (s:char[]) outList outCount :int[]=
        if i = 0 then (outCount+1 :: outList) |> List.toArray
        else
            if s.[i-1] = s.[i] then convertS (i-1) s outList (outCount+1)
            else  convertS (i-1) s (outCount+1 :: outList) 0
    convertS (s.Length-1) s List.empty 0

let ans =
    appearPatterns|>Array.chunkBySize 2|>Array.mapi(fun i [|x;y|] ->
        let mapI =(appearPatterns |> Array.take (i*2+1) |> Array.sum)-1
        match x%2,y%2 with
        |0,0 |1,1 -> [|(mapI ,(x+y)/2);(mapI+1,(x+y)/2)|]
        |1,0 -> [|(mapI ,(x+y)/2+1);(mapI+1,(x+y)/2)|]
        |0,1 -> [|(mapI ,(x+y)/2);(mapI+1,(x+y)/2+1)|]    
    )|> Array.collect (fun x -> x)

[
    for i in 0..s.Length-1 do
        match ans|>Map.ofArray|>Map.tryFind i with
        |Some v -> yield v
        |None -> yield 0
]|>List.map (fun x -> (string x) + " ")
|>List.iter stdout.Write
stdout.WriteLine()