fun main(args : Array<String>) {
    val S = readLine()!!
    val result = IntArray(S.length, { 0 })

    val spots = mutableListOf<Pair<Int, Int>>()

    var prev = ' '
    S.forEachIndexed { index, c ->
        if (c == 'L' && prev == 'R') {
            spots.add(Pair(index - 1, index))
        }

        prev = c
    }

    (0 until S.length).forEach { i->
        if (S[i] == 'R')  {
            val index = lowerBound(spots, i)
            val spot = spots[index]
            val distance = spot.first - i
            if (distance % 2 == 0) {
                result[spot.first]++
            } else {
                result[spot.second]++
            }
        } else {
            val index = lowerBound(spots, i)
            val spot = spots[index - 1]
            val distance = i - spot.second
            if (distance % 2 == 0) {
                result[spot.second]++
            } else {
                result[spot.first]++
            }
        }
    }
    result.forEach {
        print(it)
        print(' ')
    }
}
fun lowerBound(sortedList: List<Pair<Int, Int>>, key: Int) : Int {
    var ng = - 1 // left
    var ok = sortedList.size  // right

    fun isOk(mid: Int) : Boolean {
        return sortedList.get(mid).first >= key
    }

    while (Math.abs(ok - ng) > 1) {
        var mid = (ok + ng) / 2
        if (isOk(mid)) {
            ok = mid
        } else {
            ng = mid
        }
    }
    return ok
}