import sys

stdin = sys.stdin



sys.setrecursionlimit(10 ** 7)



def li(): return list(map(int, stdin.readline().split()))

def li_(): return [int(x) - 1 for x in stdin.readline().split()]

def lf(): return list(map(float, stdin.readline().split()))

def ls(): return stdin.readline().split()

def ns(): return stdin.readline().rstrip()

def lc(): return list(ns())

def ni(): return int(stdin.readline())

def nf(): return float(stdin.readline())



s = ns()

n = len(s)



ans = [0]*n



#左からRを見る

nextl = [-1]*n

curl = n-1

for i, si in enumerate(s[::-1]):

    if si == "R":

        nextl[n-i-1] = curl

    else:

        curl = n-i-1



for i, nli in enumerate(nextl):

    if nli == -1:

        continue



    if(nli - i) % 2:

        ans[nli-1] += 1

    else:

        ans[nli] += 1



# 右からLを見る

nextr = [-1]*n

curr = 0

for i, si in enumerate(s):

    if si == "L":

        nextr[i] = curr

    else:

        curr = i



for i, nri in enumerate(nextr):

    if nri == -1:

        continue



    if (i - nri) % 2:

        ans[nri+1] += 1

    else:

        ans[nri] += 1



print((*ans))



import sys

stdin = sys.stdin



sys.setrecursionlimit(10 ** 7)



def li(): return list(map(int, stdin.readline().split()))

def li_(): return [int(x) - 1 for x in stdin.readline().split()]

def lf(): return list(map(float, stdin.readline().split()))

def ls(): return stdin.readline().split()

def ns(): return stdin.readline().rstrip()

def lc(): return list(ns())

def ni(): return int(stdin.readline())

def nf(): return float(stdin.readline())



s = lc()

n = len(s)



tol = [0]*n

tor = [0]*n

ans = [0]*n



# Rにいる子のLまでの距離

dist = 0

for i in range(n-1, -1, -1):

    if s[i] == "L":

        dist = 0

    else:

        dist += 1

        tol[i] = dist



# Lにいる子のRまでの距離

dist = 0

for i in range(n):

    if s[i] == "R":

        dist = 0

    else:

        dist += 1

        tor[i] = dist



# それぞれの最終的な位置

for j, tolj in enumerate(tol):

    if tolj == 0:

        continue

    elif tolj % 2:

        ans[j + tolj - 1] += 1

    else:

        ans[j + tolj] += 1



for j, torj in enumerate(tor):

    if torj == 0:

        continue

    elif torj % 2:

        ans[j - torj + 1] += 1

    else:

        ans[j -torj] += 1



print((*ans))





import sys

stdin = sys.stdin
sys.setrecursionlimit(10**7)


def li():
    return list(map(int, stdin.readline().split()))


def li_():
    return [int(x) - 1 for x in stdin.readline().split()]


def lf():
    return list(map(float, stdin.readline().split()))


def ls():
    return stdin.readline().split()


def ns():
    return stdin.readline().rstrip()


def lc():
    return list(ns())


def ni():
    return int(stdin.readline())


def nf():
    return float(stdin.readline())


s = ns()
n = len(s)
ans = [0] * n
# 左からRを見る
nextl = [-1] * n
curl = n - 1
for i, si in enumerate(s[::-1]):
    if si == "R":
        nextl[n - i - 1] = curl
    else:
        curl = n - i - 1
for i, nli in enumerate(nextl):
    if nli == -1:
        continue
    if (nli - i) % 2:
        ans[nli - 1] += 1
    else:
        ans[nli] += 1
# 右からLを見る
nextr = [-1] * n
curr = 0
for i, si in enumerate(s):
    if si == "L":
        nextr[i] = curr
    else:
        curr = i
for i, nri in enumerate(nextr):
    if nri == -1:
        continue
    if (i - nri) % 2:
        ans[nri + 1] += 1
    else:
        ans[nri] += 1
print((*ans))

import sys

stdin = sys.stdin
sys.setrecursionlimit(10**7)


def li():
    return list(map(int, stdin.readline().split()))


def li_():
    return [int(x) - 1 for x in stdin.readline().split()]


def lf():
    return list(map(float, stdin.readline().split()))


def ls():
    return stdin.readline().split()


def ns():
    return stdin.readline().rstrip()


def lc():
    return list(ns())


def ni():
    return int(stdin.readline())


def nf():
    return float(stdin.readline())


s = lc()
n = len(s)
tol = [0] * n
tor = [0] * n
ans = [0] * n
# Rにいる子のLまでの距離
dist = 0
for i in range(n - 1, -1, -1):
    if s[i] == "L":
        dist = 0
    else:
        dist += 1
        tol[i] = dist
# Lにいる子のRまでの距離
dist = 0
for i in range(n):
    if s[i] == "R":
        dist = 0
    else:
        dist += 1
        tor[i] = dist
# それぞれの最終的な位置
for j, tolj in enumerate(tol):
    if tolj == 0:
        continue
    elif tolj % 2:
        ans[j + tolj - 1] += 1
    else:
        ans[j + tolj] += 1
for j, torj in enumerate(tor):
    if torj == 0:
        continue
    elif torj % 2:
        ans[j - torj + 1] += 1
    else:
        ans[j - torj] += 1
print((*ans))

-s = ns() +s = lc() +tol = [0] * n +tor = [0] * n -# 左からRを見る -nextl = [-1] * n -curl = n - 1 -for i, si in enumerate(s[::-1]): -    if si == "R": -        nextl[n - i - 1] = curl +# Rにいる子のLまでの距離 +dist = 0 +for i in range(n - 1, -1, -1): +    if s[i] == "L": +        dist = 0 -        curl = n - i - 1 -for i, nli in enumerate(nextl): -    if nli == -1: +        dist += 1 +        tol[i] = dist +# Lにいる子のRまでの距離 +dist = 0 +for i in range(n): +    if s[i] == "R": +        dist = 0 +    else: +        dist += 1 +        tor[i] = dist +# それぞれの最終的な位置 +for j, tolj in enumerate(tol): +    if tolj == 0: -    if (nli - i) % 2: -        ans[nli - 1] += 1 +    elif tolj % 2: +        ans[j + tolj - 1] += 1 -        ans[nli] += 1 -# 右からLを見る -nextr = [-1] * n -curr = 0 -for i, si in enumerate(s): -    if si == "L": -        nextr[i] = curr +        ans[j + tolj] += 1 +for j, torj in enumerate(tor): +    if torj == 0: +        continue +    elif torj % 2: +        ans[j - torj + 1] += 1 -        curr = i -for i, nri in enumerate(nextr): -    if nri == -1: -        continue -    if (i - nri) % 2: -        ans[nri + 1] += 1 -    else: -        ans[nri] += 1 +        ans[j - torj] += 1