import java.io.{BufferedReader, InputStream, InputStreamReader}
import java.util.StringTokenizer

import scala.collection.mutable
import scala.util.Sorting
import math.{abs, max, min}

object Main {
  def solve(): Unit = {
    val sc = new InputReader(System.in)
    val N = sc.nextInt()
    val s = sc.next
    val p = Array.ofDim[Char](4, N + 2)

    val yes = Array(
      "SSS",
      "WSW",
      "SWW",
      "WWS"
    )

    val no = Array(
      "SSW",
      "WSS",
      "SWS",
      "WWW"
    )

    def table(yesNo: Char) = yesNo match {
      case 'o' => yes
      case 'x' => no
    }

    table(s.charAt(0)).zipWithIndex foreach { case (t, j) =>
      t.indices foreach (k => p(j)(k) = t.charAt(k))
    }

    for {
      i <- 2 to N
    } {
      val ts = table(s.charAt(i - 1))
      ts foreach { t =>
        val j = ((0 until 4) find (j => t.charAt(0) == p(j)(i - 1) && t.charAt(1) == p(j)(i))).get
        p(j)(i + 1) = t.charAt(2)
      }
    }

    val ans = ((0 until 4) find (j => p(j)(0) == p(j)(N) && p(j)(1) == p(j)(N + 1))) map { j =>
      ((1 to N) map (p(j)(_))).mkString
    } getOrElse "-1"
    println(ans)
  }


  def main(args: Array[String]): Unit = {
    solve()
  }


  private class InputReader(val stream: InputStream) {
    private val reader = new BufferedReader(new InputStreamReader(stream), 32768)
    private var tokenizer: StringTokenizer = null

    def next: String = {
      while (tokenizer == null || !tokenizer.hasMoreTokens)
        tokenizer = new StringTokenizer(reader.readLine)
      tokenizer.nextToken
    }

    def nextInt(): Int = next.toInt
    def nextLong(): Long = next.toLong
    def nextChar(): Char = next.charAt(0)
  }

}
