using System;

namespace question4
{
    class Program
    {
        static void Main(string[] args)
        {
            string LR = "LR";
            string str = Console.ReadLine();
            int N = str.Length;
            int[] idx = new int[N];
            int[] res = new int[N];
            int reg = 0;
            int count = 0;
            int pos = 0;
            string state = "leftwing";
            for (int i = 0; i < N; i++)
            {
                if (state == "leftwing" && str[i].Equals(LR[1])) // 右送り
                {
                    //state は左翼のまま
                    count++;
                    reg++;
                }

                else if (state == "leftwing" && str[i].Equals(LR[0])) // 切り替わり - 谷
                {
                    state = "rightwing"; //state は右翼になる
                    count++;
                    //この段階で reg は更新停止
                    idx[i-1] = reg;
                    //この場所を "pos" と記載。切り替わる直前の場所。
                    pos = i - 1;
                }

                else  if (state == "rightwing" && str[i].Equals(LR[0])) //左送り
                {
                    //state は右翼のまま
                    count++;
                }

                else if (state == "rightwing" && str[i].Equals(LR[1]))//切り替わり - 山
                {
                    state = "leftwing"; //state は左翼になる
                    //切り替わったのでカウントも停止
                    idx[i-1] = count;

                    //pos の場所と、pos+1 の場所だけ数字が記載される。
                    //偶数ならどっちも同じ数
                    if (count%2 == 0)
                    {
                        res[pos] = count / 2;
                        res[pos + 1] = count / 2;
                    }
                    //奇数なら
                    else
                    {
                        //もし reg が偶数なら右のほうが大きいので
                        if (reg%2 == 0)
                        {
                            res[pos] = count / 2;
                            res[pos + 1] = count / 2 + 1;
                        }
                        //そうじゃなければ左のほうが大きいはず
                        else
                        {
                            res[pos] = count / 2+1;
                            res[pos + 1] = count / 2 ;
                        }

                    }
                    count = 1;//ここが左翼のスタートなのでカウント再開
                    reg = 1;//こっちも
                }

                if (i == (N-1)) //終端
                {
                    state = "leftwing"; //state は左翼になる
                    //切り替わったのでカウントも停止
                    idx[i] = count;
                    //pos の場所と、pos+1 の場所だけ数字が記載される。
                    //偶数ならどっちも同じ数
                    if (count % 2 == 0)
                    {
                        res[pos] = count / 2;
                        res[pos + 1] = count / 2;
                    }
                    //奇数なら
                    else
                    {
                        //もし reg が偶数なら右のほうが大きいので
                        if (reg % 2 == 0)
                        {
                            res[pos] = count / 2;
                            res[pos + 1] = count / 2 + 1;
                        }
                        //そうじゃなければ左のほうが大きいはず
                        else
                        {
                            res[pos] = count / 2 + 1;
                            res[pos + 1] = count / 2;
                        }

                    }
                    count = 0;
                    reg = 0;
                }

                //res[i] = count;
                
            }

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            for (int i = 0; i < N; i++)
            {
                sb.Append(res[i]);
                sb.Append(" ");
            }
            Console.WriteLine(sb.ToString());
          
            //Console.ReadLine();
        }
    }
}


Measured memory_bytes: 15456