S=eval(input())

N=len(S)

ans=[0]*N



S+="R"



RL=0

LR=0

for i in range(1,N+1):

    if S[i-1]=="R" and S[i]=="L":

        RL=i

    elif S[i-1]=="L" and S[i]=="R":

        LR_next=i

        length=LR_next-LR

        if length%2==0:

            ans[RL-1]=length//2

            ans[RL]=length//2

        else:

            if (RL-LR)%2==1:

                ans[RL-1]=length//2+1

                ans[RL]=length//2

            else:

                ans[RL-1]=length//2

                ans[RL]=length//2+1

        LR=LR_next

                

print((' '.join(map(str, ans))))


def I(): return int(eval(input()))

def MI(): return list(map(int, input().split()))

def LI(): return list(map(int, input().split()))



def main():

    import bisect

    mod=10**9+7

    S=eval(input())

    N=len(S)

    R=[]

    L=[]

    for i in range(N):

        if S[i]=="R":

            R.append(i)

        else:

            L.append(i)

            

    ans=[0]*N

    

    for i in range(N):

        if S[i]=="R":#右側にある一番近いLを探す，それとの距離の偶奇，で

            num = bisect.bisect_left(L,i)

            ii=L[num]

            d=ii-i

            

            if d%2==0:

                ans[ii]+=1

            else:

                ans[ii-1]+=1

                

        else:

            num = bisect.bisect_left(R,i)

            ii=R[num-1]

            d=i-ii

            if d%2==0:

                ans[ii]+=1

            else:

                ans[ii+1]+=1

                

    print((' '.join(map(str, ans))))

            

            

    

    

    



main()

S = eval(input())
N = len(S)
ans = [0] * N
S += "R"
RL = 0
LR = 0
for i in range(1, N + 1):
    if S[i - 1] == "R" and S[i] == "L":
        RL = i
    elif S[i - 1] == "L" and S[i] == "R":
        LR_next = i
        length = LR_next - LR
        if length % 2 == 0:
            ans[RL - 1] = length // 2
            ans[RL] = length // 2
        else:
            if (RL - LR) % 2 == 1:
                ans[RL - 1] = length // 2 + 1
                ans[RL] = length // 2
            else:
                ans[RL - 1] = length // 2
                ans[RL] = length // 2 + 1
        LR = LR_next
print((" ".join(map(str, ans))))

def I():
    return int(eval(input()))


def MI():
    return list(map(int, input().split()))


def LI():
    return list(map(int, input().split()))


def main():
    import bisect

    mod = 10**9 + 7
    S = eval(input())
    N = len(S)
    R = []
    L = []
    for i in range(N):
        if S[i] == "R":
            R.append(i)
        else:
            L.append(i)
    ans = [0] * N
    for i in range(N):
        if S[i] == "R":  # 右側にある一番近いLを探す，それとの距離の偶奇，で
            num = bisect.bisect_left(L, i)
            ii = L[num]
            d = ii - i
            if d % 2 == 0:
                ans[ii] += 1
            else:
                ans[ii - 1] += 1
        else:
            num = bisect.bisect_left(R, i)
            ii = R[num - 1]
            d = i - ii
            if d % 2 == 0:
                ans[ii] += 1
            else:
                ans[ii + 1] += 1
    print((" ".join(map(str, ans))))


main()

-S = eval(input()) -N = len(S) -ans = [0] * N -S += "R" -RL = 0 -LR = 0 -for i in range(1, N + 1): -    if S[i - 1] == "R" and S[i] == "L": -        RL = i -    elif S[i - 1] == "L" and S[i] == "R": -        LR_next = i -        length = LR_next - LR -        if length % 2 == 0: -            ans[RL - 1] = length // 2 -            ans[RL] = length // 2 +def I(): +    return int(eval(input())) + + +def MI(): +    return list(map(int, input().split())) + + +def LI(): +    return list(map(int, input().split())) + + +def main(): +    import bisect + +    mod = 10**9 + 7 +    S = eval(input()) +    N = len(S) +    R = [] +    L = [] +    for i in range(N): +        if S[i] == "R": +            R.append(i) -            if (RL - LR) % 2 == 1: -                ans[RL - 1] = length // 2 + 1 -                ans[RL] = length // 2 +            L.append(i) +    ans = [0] * N +    for i in range(N): +        if S[i] == "R":  # 右側にある一番近いLを探す，それとの距離の偶奇，で +            num = bisect.bisect_left(L, i) +            ii = L[num] +            d = ii - i +            if d % 2 == 0: +                ans[ii] += 1 -                ans[RL - 1] = length // 2 -                ans[RL] = length // 2 + 1 -        LR = LR_next -print((" ".join(map(str, ans)))) +                ans[ii - 1] += 1 +        else: +            num = bisect.bisect_left(R, i) +            ii = R[num - 1] +            d = i - ii +            if d % 2 == 0: +                ans[ii] += 1 +            else: +                ans[ii + 1] += 1 +    print((" ".join(map(str, ans)))) + + +main()