#include <bits/stdc++.h>
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define FSP(x) fixed << setprecision(x)
using namespace std;
using ll = long long;
constexpr ll INF = LLONG_MAX;
constexpr long double PI = acosl(-1);
void Yes() {cout << "Yes\n";}
void No() {cout << "No\n";}
void YES() {cout << "YES\n";}
void NO() {cout << "NO\n";}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	//constexpr ll P = 1e9 + 7;
	//constexpr ll P = 998244353;

	ll n;
	string s;
	cin >> n >> s;

	auto out_ans = [] (vector<bool> is_sheep) {
		for (auto i : is_sheep) cout << (i?'S':'W');
		cout << endl;
	};

	{
		vector<bool> is_sheep(n);
		is_sheep[0] = true; is_sheep[1] = true;
		if (s[0] == 'o') is_sheep[n - 1] = true;
		else is_sheep[n - 1] = false;
		for (ll i = 2; i < n - 1; i++) {
			is_sheep[i] = is_sheep[i - 2];
			if (is_sheep[i - 1] && s[i - 1] == 'x') is_sheep[i] = !is_sheep[i];
			if (!is_sheep[i - 1] && s[i - 1] == 'o') is_sheep[i] = !is_sheep[i];
		}
		bool b = is_sheep[n - 3];
		if (is_sheep[n - 2] && s[n - 2] == 'x') b = !b;
		if (!is_sheep[n - 2] && s[n - 2] == 'o') b = !b;
		if (b == is_sheep[n - 1]) {
			if (b) {
				if (s[n - 1] == 'o' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			} else {
				if (s[n - 1] == 'o' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			}
		}
	}

	{
		vector<bool> is_sheep(n);
		is_sheep[0] = true; is_sheep[1] = false;
		if (s[0] == 'o') is_sheep[n - 1] = false;
		else is_sheep[n - 1] = true;
		for (ll i = 2; i < n - 1; i++) {
			is_sheep[i] = is_sheep[i - 2];
			if (is_sheep[i - 1] && s[i - 1] == 'x') is_sheep[i] = !is_sheep[i];
			if (!is_sheep[i - 1] && s[i - 1] == 'o') is_sheep[i] = !is_sheep[i];
		}
		bool b = is_sheep[n - 3];
		if (is_sheep[n - 2] && s[n - 2] == 'x') b = !b;
		if (!is_sheep[n - 2] && s[n - 2] == 'o') b = !b;
		if (b == is_sheep[n - 1]) {
			if (b) {
				if (s[n - 1] == 'o' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			} else {
				if (s[n - 1] == 'o' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			}
		}
	}

	{
		vector<bool> is_sheep(n);
		is_sheep[0] = false; is_sheep[1] = true;
		if (s[0] == 'o') is_sheep[n - 1] = false;
		else is_sheep[n - 1] = true;
		for (ll i = 2; i < n - 1; i++) {
			is_sheep[i] = is_sheep[i - 2];
			if (is_sheep[i - 1] && s[i - 1] == 'x') is_sheep[i] = !is_sheep[i];
			if (!is_sheep[i - 1] && s[i - 1] == 'o') is_sheep[i] = !is_sheep[i];
		}
		bool b = is_sheep[n - 3];
		if (is_sheep[n - 2] && s[n - 2] == 'x') b = !b;
		if (!is_sheep[n - 2] && s[n - 2] == 'o') b = !b;
		if (b == is_sheep[n - 1]) {
			if (b) {
				if (s[n - 1] == 'o' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			} else {
				if (s[n - 1] == 'o' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			}
		}
	}

	{
		vector<bool> is_sheep(n);
		is_sheep[0] = false; is_sheep[1] = false;
		if (s[0] == 'o') is_sheep[n - 1] = true;
		else is_sheep[n - 1] = false;
		for (ll i = 2; i < n - 1; i++) {
			is_sheep[i] = is_sheep[i - 2];
			if (is_sheep[i - 1] && s[i - 1] == 'x') is_sheep[i] = !is_sheep[i];
			if (!is_sheep[i - 1] && s[i - 1] == 'o') is_sheep[i] = !is_sheep[i];
		}
		bool b = is_sheep[n - 3];
		if (is_sheep[n - 2] && s[n - 2] == 'x') b = !b;
		if (!is_sheep[n - 2] && s[n - 2] == 'o') b = !b;
		if (b == is_sheep[n - 1]) {
			if (b) {
				if (s[n - 1] == 'o' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			} else {
				if (s[n - 1] == 'o' && is_sheep[n - 2] != is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
				if (s[n - 1] == 'x' && is_sheep[n - 2] == is_sheep[0]) {
					out_ans(is_sheep);
					return 0;
				}
			}
		}
	}
	cout << -1 << endl;
}

Measured memory_bytes: 3792