#include <iostream>
#include <string>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <map>
#include <cmath>
#include <queue>
#include <utility>
#include <functional>
#include <deque>
#include <cctype>
#include <stack>
#include <bitset>
#include <set>

using namespace std;
using ll = long long;
typedef unsigned long long ull;
typedef pair<ll, ll> P;

const ll MOD = 1e9 + 7;
const ll INF = 1 << 30;
const ll INF2 = 9e18;
const double INF3 = 9e14;
const int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,1,0,-1 };
const int tx[8] = { -1,0,1,-1,1,-1,0,1 }, ty[8] = { -1,-1,-1,0,0,1,1,1 };
#define ALL(x) (x).begin(),(x).end()
#define pb push_back
#define fr first
#define sc second

char x[2] = { 'S','W' };

int main() {
	int n;
	string s, t;
	cin >> n >> s;
	for (int y = 0;y < 2;y++){
		for (int z = 0;z < 2;z++) {
		t = s;
		t[0] = x[y], t[1] = x[z];
		bool fl = 1;
		for (int i = 1;i < n - 1;i++) {
			if (s[i] == 'o') {
				if (t[i] == 'S'&&t[i - 1] == 'S')t[i + 1] = 'S';
				else if (t[i] == 'S'&&t[i - 1] == 'W')t[i + 1] = 'W';
				else if (t[i] == 'W'&&t[i - 1] == 'S')t[i + 1] = 'W';
				else t[i + 1] = 'S';
			}
			else {
				if (t[i] == 'S'&&t[i - 1] == 'S')t[i + 1] = 'W';
				else if (t[i] == 'S'&&t[i - 1] == 'W')t[i + 1] = 'S';
				else if (t[i] == 'W'&&t[i - 1] == 'S')t[i + 1] = 'S';
				else t[i + 1] = 'W';
			}
		}


		if (s[n - 1] == 'o') {
			if (t[n - 1] == 'S'&&t[n - 2] == 'S'&&t[0] == 'S');
			else if (t[n - 1] == 'S'&&t[n - 2] == 'W'&&t[0] == 'W');
			else if (t[n - 1] == 'W'&&t[n - 2] == 'S'&&t[0] == 'W');
			else if (t[n - 1] == 'W'&&t[n - 2] == 'W'&&t[0] == 'S');
			else {
				fl = false;
				continue;
			}

		}
		else {
			if (t[n - 1] == 'S'&&t[n - 2] == 'S'&&t[0] == 'W');
			else if (t[n - 1] == 'S'&&t[n - 2] == 'W'&&t[0] == 'S');
			else if (t[n - 1] == 'W'&&t[n - 2] == 'S'&&t[0] == 'S');
			else if (t[n - 1] == 'W'&&t[n - 2] == 'W'&&t[0] == 'W');
			else {
				fl = false;
				continue;
			}
		}

		if (s[0] == 'o') {
			if (t[0] == 'S'&&t[n - 1] == 'S'&&t[1] == 'S');
			else if (t[0] == 'S'&&t[n - 1] == 'W'&& t[1] == 'W');
			else if (t[0] == 'W'&&t[n - 1] == 'S'&&t[1] == 'W');
			else if (t[0] == 'W'&&t[n - 1] == 'W'&&t[1] == 'S');
			else {
				fl = false;
				continue;
			}
		}
		else {
			if (t[0] == 'S'&&t[n - 1] == 'S'&&t[1] == 'W');
			else if (t[0] == 'S'&&t[n - 1] == 'W'&&t[1] == 'S');
			else if (t[0] == 'W'&&t[n - 1] == 'S'&&t[1] == 'S');
			else if (t[0] == 'W'&&t[n - 1] == 'W'&&t[1] == 'W');
			else {
				fl = false;
				continue;
			}
		}

		for (int i = 1;i < n - 1;i++) {
			if (s[i] == 'o') {
				if (t[i] == 'S'&&t[i - 1] == 'S'&& t[i + 1] == 'S');
				else if (t[i] == 'S'&&t[i - 1] == 'W'&&t[i + 1] == 'W');
				else if (t[i] == 'W'&&t[i - 1] == 'S'&&t[i + 1] == 'W');
				else if (t[i] == 'W'&&t[i - 1] == 'W'&&t[i + 1] == 'S');
				else {
					fl = false;
					break;;
				}
			}
			else {
				if (t[i] == 'S'&&t[i - 1] == 'S'&&t[i + 1] == 'W');
				else if (t[i] == 'S'&&t[i - 1] == 'W'&&t[i + 1] == 'S');
				else if (t[i] == 'W'&&t[i - 1] == 'S'&&t[i + 1] == 'S');
				else if (t[i] == 'W'&&t[i - 1] == 'W'&&t[i + 1] == 'W');
				else {
					fl = false;
					break;
				}
			}
		}

		if (fl) {
			cout << t << endl;
			return 0;
		}
	}
}
	cout << -1 << endl;
}

Measured memory_bytes: 640