fun main(args: Array<String>) {
    abc136d()
}

fun abc136d() {
    val isRight = readLine()!!.map { it == 'R' }.toBooleanArray()

    // RR...LL でグルーピング
    val grouped = mutableListOf<Pair<BooleanArray, Int>>()
    var left = 0
    while (left in isRight.indices) {
        var right = left
        // Lの左端まで移動
        while (right in isRight.indices && isRight[right]) right++
        // Rの右端を取っておく
        val rightestOfR = right - left - 1
        // Rの左端まで移動(次のグループの始点)
        while (right in isRight.indices && !isRight[right]) right++
        grouped.add(Pair(isRight.slice(left until right).toBooleanArray(), rightestOfR))

        left = right
    }

    var currentLeft = 0
    val answer = grouped.map { pair ->
        val (booleans, rightestOfR) = pair
        // .. RL .. にすべて集まる
        // それぞれ偶数マス離れたものが最終的に集約される
        val rIndexIsEven = rightestOfR % 2 == 0
        val r = booleans.filterIndexed { index, b -> (index % 2 == 0) == rIndexIsEven }.count()
        val l = booleans.filterIndexed { index, b -> (index % 2 == 0) != rIndexIsEven }.count()
        val ret = IntArray(booleans.size) { 0 }
        ret[rightestOfR] = r
        ret[rightestOfR + 1] = l
        currentLeft += booleans.size
        ret
    }.flatMap { it.asIterable() }.joinToString(" ")

    println(answer)
}
