fun main(args: Array<String>) {
    val ss = readLine()!!.split(" ")[0]
    val s = ss.toCharArray()
    val sLen = s.size
    val rlArray = Array(sLen) { 0 }
    val roopArray = Array(sLen) { sLen+1 }.toMutableList()
    for (i in 0 until sLen) {
        if (s[i] == 'R') {
            if (s[i + 1] == 'L') {
                rlArray[i] = 1
                rlArray[i + 1] = 1
                roopArray[i] = i
            }
        }
    }
    roopArray.removeAll { it == sLen+1 }
    for (i in 0 until sLen) {
        if (rlArray[i] == 0) {
            if (s[i] == 'R') {
                val x = myBinary(i, roopArray)
                if ((x - i) % 2 == 0){
                    rlArray[x]++
                } else {
                    rlArray[x + 1]++
                }
            } else {
                val x = myBinaryLeft(i, roopArray)
                if ((i - x) % 2 == 0){
                    rlArray[x]++
                } else {
                    rlArray[x + 1]++
                }
            }
        }
    }
    for (i in 0 until sLen){
        print(" ${rlArray[i]}")
    }
}

fun myBinary(key: Int, useList: MutableList<Int>): Int {
    val indexSize = useList.size
    var right = indexSize - 1
    var left = 0
    var mid = (right + left) / 2
    var a = right - left
    var flag = 0
    if (key < useList[left]) flag = 1
    if (indexSize == 2 && key < useList[left]) right = left


    while (a > 1){
        if (flag == 1){
            right = left
            break
        } else if (key >= useList[mid]) {
            left = mid
        } else {
            right = mid
        }
        a = right - left
        mid = (right + left) / 2
    }
    return useList[right]
}

fun myBinaryLeft(key: Int, useList: MutableList<Int>): Int {
    val indexSize = useList.size
    var right = indexSize - 1
    var left = 0
    var mid = (right + left) / 2
    var a = right - left
    var flag = 0
    if (key > useList[right]) flag = 1
    if (indexSize == 2 && key > useList[right]) left = right

    while (a > 1){
        if (flag == 1){
            left = right
            break
        } else if (key >= useList[mid]) {
            left = mid
        } else {
            right = mid
        }
        a = right - left
        mid = (right + left) / 2
    }
    return useList[left]
}