#include<iostream>
#include<iostream>
#include<stdio.h>
#include<string>
#include<vector>
#include<map>
#include<math.h>
#include<algorithm>
#include<iomanip>

using namespace std;

class Counting {
	unsigned long long p, n;
	vector<long long> invMemo, facMemo, facInvMemo;
public:
	Counting(unsigned long long nn, unsigned long long np) {
		p = np;
		n = nn;
		invMemo.resize(n + 1);
		facMemo.resize(n + 1);
		facInvMemo.resize(n + 1);
		facMemo[0] = 1;
		facMemo[1] = 1;
		facInvMemo[0] = 1;
		facInvMemo[1] = 1;
		invMemo[0] = 0;
		invMemo[1] = 1;
		for (unsigned long long i = 2; i <= n; i++) {
			invMemo[i] = p - (p / i)*invMemo[p%i] % p;
			facMemo[i] = (facMemo[i - 1] * i) % p;
			facInvMemo[i] = (facInvMemo[i - 1] * invMemo[i]) % p;
		}
	}
	unsigned long long fac(unsigned long long k) {
		return facMemo[k];
	}
	unsigned long long facInv(unsigned long long k) {
		return facInvMemo[k];
	}
	unsigned long long choose(unsigned long long n, unsigned long long k) {
		if (!(0 <= k && k <= n))
			return 0;
		return (((facMemo[n] * facInvMemo[k]) % p)*facMemo[n - k]) % p;
	}
	unsigned long long divide(unsigned long long a, unsigned long long b) {
		return (a * invMemo[b]) % p;
	}
	unsigned long long mod(unsigned long long a) {
		a %= p;
		if (a < 0) a += p;
		return a;
	}
	unsigned long long power(unsigned long long a, unsigned long long e) {
		unsigned long long ans = 1;
		for (; e > 0; e /= 2) {
			if (e % 2 != 0)
				ans = ans * a % p;
			a = a*a%p;
		}
		return ans;
	}
};

void drawAns(vector<int> a) {
	for (int i = 0; i < a.size() - 1; i++) {
		if (a[i] == 0) {
			cout << 'S';
		}
		else {
			cout << 'W';
		}
	}
	cout << endl;
	return;
}

int main() {
	int n;
	cin >> n;
	string s;
	cin >> s;
	vector<int> ani;
	ani.resize(n + 1);

	ani[0] = 0;
	ani[1] = 0;
	for (int i = 1; i < n; i++) {
		if (ani[i] == 0) {
			if (s[i] == 'o') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
		else {
			if (s[i] == 'x') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
	}
	if (ani[0] == ani[n]) {
		if (s[0] == 'o') {
			if (ani[1] == ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
		else {
			if (ani[1] != ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
	}

	ani.resize(n + 1);
	ani[0] = 0;
	ani[1] = 1;
	for (int i = 1; i < n; i++) {
		if (ani[i] == 0) {
			if (s[i] == 'o') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
		else {
			if (s[i] == 'x') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
	}
	if (ani[0] == ani[n]) {
		if (s[0] == 'o') {
			if (ani[1] == ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
		else {
			if (ani[1] != ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
	}

	ani.resize(n + 1);
	ani[0] = 1;
	ani[1] = 0;
	for (int i = 1; i < n; i++) {
		if (ani[i] == 0) {
			if (s[i] == 'o') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
		else {
			if (s[i] == 'x') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
	}
	if (ani[0] == ani[n]) {
		if (s[0] == 'x') {
			if (ani[1] == ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
		else {
			if (ani[1] != ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
	}

	ani.resize(n + 1);
	ani[0] = 1;
	ani[1] = 1;
	for (int i = 1; i < n; i++) {
		if (ani[i] == 0) {
			if (s[i] == 'o') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
		else {
			if (s[i] == 'x') {
				ani[i + 1] = ani[i - 1];
			}
			else {
				ani[i + 1] = 1 - ani[i - 1];
			}
		}
	}
	if (ani[0] == ani[n]) {
		if (s[0] == 'x') {
			if (ani[1] == ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
		else {
			if (ani[1] != ani[n - 1]) {
				drawAns(ani);
			//	cin >> n;
				return 0;
			}
		}
	}
	cout << -1 << endl;
	return 0;
}

Measured memory_bytes: 1408