fun main(arg: Array<String>) {
    val N = nextInt()
    val S = next()
    val A = S.map { it == 'o' }.toBooleanArray()
    val B = BooleanArray(N)
    val C = BooleanArray(N)
    for (b in 0 .. 3) { // 00 01 10 11
        B[0] = (b and 1) != 0
        B[1] = (b and 2) != 0
        for (n in C.indices) {
            C[n] = A[n] xor B[n]
            if (n in 1 until N - 1) B[n + 1] = B[n - 1] xor C[n]
        }
        if (B[0] == (B[N - 2] xor C[N - 1]) && B[N - 1] == (B[1] xor C[0])) {
            val ans = B.joinToString("") {if (it) "S" else "W"}
            return println(ans)
        }
    }
    println(-1)
}

fun next() = readLine()!!
fun nextInt() = next().toInt()
fun nextLong() = next().toLong()
fun listOfString() = next().split(" ")
fun listOfInt() = listOfString().map(String::toInt)
fun listOfInt(vararg deltas: Int) = listOfString().map { Integer.parseInt(it) }.mapIndexed { index, int -> int + deltas[index % deltas.size] }
fun listOfLong() = listOfString().map(String::toLong)

