package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

var sc = bufio.NewScanner(os.Stdin)

func Scanner() string {
	sc.Scan()
	return sc.Text()
}

func main() {
	buf := make([]byte, 0)
	sc.Buffer(buf, 1000000007)
	sc.Split(bufio.ScanWords)
	n, _ := strconv.Atoi(Scanner())
	s := Scanner()
	ans1 := make([]string, n)
	ans1[0], ans1[1] = "S", "S"
	f1 := false
	for i := 1; i < n-1; i++ {
		if (ans1[i] == "S" && string(s[i]) == "o") || (ans1[i] == "W" && string(s[i]) == "x") {
			ans1[i+1] = ans1[i-1]
		} else {
			if ans1[i-1] == "S" {
				ans1[i+1] = "W"
			} else {
				ans1[i+1] = "S"
			}
		}
	}
	if (ans1[n-1] == "S" && string(s[n-1]) == "o") || (ans1[n-1] == "W" && string(s[n-1]) == "x") {
		if ans1[n-2] == ans1[0] {
			f1 = true
		}
	} else {
		if ans1[n-2] != ans1[0] {
			f1 = true
		}
	}
	if (ans1[0] == "S" && string(s[0]) == "o") || (ans1[0] == "W" && string(s[0]) == "x") {
		if ans1[n-1] != ans1[1] {
			f1 = false
		}
	} else {
		if ans1[n-1] == ans1[1] {
			f1 = false
		}
	}
	ans2 := make([]string, n)
	ans2[0], ans2[1] = "S", "W"
	f2 := false
	for i := 1; i < n-1; i++ {
		if (ans2[i] == "S" && string(s[i]) == "o") || (ans2[i] == "W" && string(s[i]) == "x") {
			ans2[i+1] = ans2[i-1]
		} else {
			if ans2[i-1] == "S" {
				ans2[i+1] = "W"
			} else {
				ans2[i+1] = "S"
			}
		}
	}
	if (ans2[n-1] == "S" && string(s[n-1]) == "o") || (ans2[n-1] == "W" && string(s[n-1]) == "x") {
		if ans2[n-2] == ans2[0] {
			f2 = true
		}
	} else {
		if ans2[n-2] != ans2[0] {
			f2 = true
		}
	}
	if (ans2[0] == "S" && string(s[0]) == "o") || (ans2[0] == "W" && string(s[0]) == "x") {
		if ans2[n-1] != ans2[1] {
			f2 = false
		}
	} else {
		if ans2[n-1] == ans2[1] {
			f2 = false
		}
	}
	ans3 := make([]string, n)
	ans3[0], ans3[1] = "W", "S"
	f3 := false
	for i := 1; i < n-1; i++ {
		if (ans3[i] == "S" && string(s[i]) == "o") || (ans3[i] == "W" && string(s[i]) == "x") {
			ans3[i+1] = ans3[i-1]
		} else {
			if ans3[i-1] == "S" {
				ans3[i+1] = "W"
			} else {
				ans3[i+1] = "S"
			}
		}
	}
	if (ans3[n-1] == "S" && string(s[n-1]) == "o") || (ans3[n-1] == "W" && string(s[n-1]) == "x") {
		if ans3[n-2] == ans3[0] {
			f3 = true
		}
	} else {
		if ans3[n-2] != ans3[0] {
			f3 = true
		}
	}
	if (ans3[0] == "S" && string(s[0]) == "o") || (ans3[0] == "W" && string(s[0]) == "x") {
		if ans3[n-1] != ans3[1] {
			f3 = false
		}
	} else {
		if ans3[n-1] == ans3[1] {
			f3 = false
		}
	}
	ans4 := make([]string, n)
	ans4[0], ans4[1] = "W", "W"
	f4 := false
	for i := 1; i < n-1; i++ {
		if (ans4[i] == "S" && string(s[i]) == "o") || (ans4[i] == "W" && string(s[i]) == "x") {
			ans4[i+1] = ans4[i-1]
		} else {
			if ans4[i-1] == "S" {
				ans4[i+1] = "W"
			} else {
				ans4[i+1] = "S"
			}
		}
	}
	if (ans4[n-1] == "S" && string(s[n-1]) == "o") || (ans4[n-1] == "W" && string(s[n-1]) == "x") {
		if ans4[n-2] == ans4[0] {
			f4 = true
		}
	} else {
		if ans4[n-2] != ans4[0] {
			f4 = true
		}
	}
	if (ans4[0] == "S" && string(s[0]) == "o") || (ans4[0] == "W" && string(s[0]) == "x") {
		if ans4[n-1] != ans4[1] {
			f4 = false
		}
	} else {
		if ans4[n-1] == ans4[1] {
			f4 = false
		}
	}
	if f1 {
		fmt.Println(strings.Join(ans1, ""))
	} else if f2 {
		fmt.Println(strings.Join(ans2, ""))
	} else if f3 {
		fmt.Println(strings.Join(ans3, ""))
	} else if f4 {
		fmt.Println(strings.Join(ans4, ""))
	} else {
		fmt.Println(-1)
	}
}


Measured memory_bytes: 7680