val SHEEP = 'S'
val WOLFE = 'W'
val UNDEFINED = ' '
fun main(args : Array<String>) {
    val N = readLine()!!.toInt()
    val s = readLine()!!

    var a = Array(N, { UNDEFINED })
    // Assume that (a[0], a[-1]) = (S ,S)
    a[0] = SHEEP
    a[N - 1] = SHEEP
    if (isValid(s, a)) {
        println(a.joinToString(""))
        return
    }

    // Assume that (a[0], a[-1]) = (S ,W)
    a = Array(N, { UNDEFINED })
    a[0] = SHEEP
    a[N - 1] = WOLFE
    if (isValid(s, a)) {
        println(a.joinToString(""))
        return
    }

    // Assume that (a[0], a[-1]) = (W ,S)
    a = Array(N, { UNDEFINED })
    a[0] = WOLFE
    a[N - 1] = SHEEP
    if (isValid(s, a)) {
        println(a.joinToString(""))
        return
    }

    // Assume that (a[0], a[-1]) = (W ,W)
    a = Array(N, { UNDEFINED })
    a[0] = WOLFE
    a[N - 1] = WOLFE
    if (isValid(s, a)) {
        println(a.joinToString(""))
        return
    }

    println("-1")
}

fun flip(char: Char) : Char {
    if (char == 'S') {
        return 'W'
    }
    return 'S'
}

fun isValid(s: String, a: Array<Char>) : Boolean {
    val N = s.length
    s.forEachIndexed { i, c ->
        val left = if (i ==0) N - 1 else i - 1
        val right = if (i == N - 1) 0 else i + 1
        var rightShouldBe = UNDEFINED
        if (c == 'o') {
            if (a[i] == SHEEP) {
                rightShouldBe = a[left]
            }
            if (a[i] == WOLFE) {
                rightShouldBe = flip(a[left])
            }
        } else {
            if (a[i] == SHEEP) {
                rightShouldBe = flip(a[left])
            }
            if (a[i] == WOLFE) {
                rightShouldBe = a[left]
            }
        }

        if (a[right] == UNDEFINED) {
            a[right] = rightShouldBe
        } else {
            if (a[right] != rightShouldBe) {
                return false
            }
        }
    }

    return true
}
