
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    string s;
    cin >> n >> s;
    auto check = [&](char out0, char out1) {
        auto a = out0;
        char out2;
        auto v = vector<char>();
        v.push_back(out0);
        v.push_back(out1);
        auto f = [](char in1, char out0, char out1) {
            char out2;
            if (in1 == 'o') {
                if (out0 == 'S' && out1 == 'S') out2 = 'S';
                if (out0 == 'S' && out1 == 'W') out2 = 'W';
                if (out0 == 'W' && out1 == 'S') out2 = 'W';
                if (out0 == 'W' && out1 == 'W') out2 = 'S';
            } else {
                if (out0 == 'S' && out1 == 'S') out2 = 'W';
                if (out0 == 'S' && out1 == 'W') out2 = 'S';
                if (out0 == 'W' && out1 == 'S') out2 = 'S';
                if (out0 == 'W' && out1 == 'W') out2 = 'W';
            }
            return out2;
        };
        for (int i = 1; i < n; i++) {
            char in1 = s[i];
            out2 = f(in1, out0, out1);
            v.push_back(out2);
            out0 = out1;
            out1 = out2;
        }

        if (out2 == a) {
            v.erase(v.end() - 1);
            if (f(s[0], v[n - 1], v[0]) == v[1]) {
                return v;
            }
        }
        return vector<char>();
    };

    auto intToC = [](int a) {
        return a == 0 ? 'S' : 'W';
    };

    for (int i = 0; i < 4; i++) {
        char out0 = intToC(i % 2);
        char out1 = intToC(i / 2 % 2);
        auto v = check(out0, out1);
        if (v.size() > 0) {
            for (auto c : v) {
                putchar(c);
            }
            puts("");
            return 0;
        }
    }

    puts("-1");
}

#include <bits/stdc++.h>

using namespace std;

#define loop(i, n) for(int i = 0;i < int(n);i++)
#define rloop(i, n) for(int i = int(n);i >= 0;i--)
#define range(i, a, b) for(int i = int(a);i <= int(b);i++)
#define SZ(c) int(c.size())
#define ALL(c) c.begin(), c.end()
#define RALL(c) c.rbegin(), c.rend()
#define PI acos(-1)
#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define sfi1(v) scanf("%d",&v)
#define sfi2(v1, v2) scanf("%d %d",&v1,&v2)
#define sfi3(v1, v2, v3) scanf("%d %d %d",&v1,&v2,&v3)
#define sfll1(v) scanf("%I64d",&v);
#define sfll2(v1, v2) scanf("%I64d %I64d",&v1,&v2)
#define sfll3(v1, v2, v3) scanf("%I64d %I64d %I64d",&v1,&v2,&v3)
#define endl '\n'

typedef vector<int> vi;
typedef vector<pair<int, int> > vii;
typedef long long ll;
typedef pair<int, int> pii;

const int N = 1e5 + 5;
int dp[N][2][2];
int vis[N][2][2], visid;
int F, L;
string str;
int n;
//sheep 0 , wolf 1

int solve(int idx, int cur, int lst) {
    int &ret = dp[idx][cur][lst];
    if (vis[idx][cur][lst] == visid)return ret;
    vis[idx][cur][lst] = visid;
    if (idx == n - 1) {
        if (cur != L)return ret = 0;
        if (cur == 0) {
            ret = (str[idx] == 'o' && F == lst || str[idx] == 'x' && F != lst);
        } else {
            ret = (str[idx] == 'x' && F == lst || str[idx] == 'o' && F != lst);
        }
        return ret;
    }

    int nxt;
    if (cur == 0) {
        //truth
        nxt = (str[idx] == 'o') ? lst : (!lst);
        ret = solve(idx + 1, nxt, cur);
    } else {
        //lie
        nxt = (str[idx] == 'o') ? (!lst) : lst;
        ret = solve(idx + 1, nxt, cur);
    }
    return ret;
}

string ans;

void build(int idx, int cur, int lst) {
    ans += (cur ? 'W' : 'S');
    if (idx == n - 1)return;
    int nxt;
    if (cur == 0) {
        //truth
        nxt = (str[idx] == 'o') ? lst : (!lst);
        build(idx + 1, nxt, cur);
    } else {
        //lie
        nxt = (str[idx] == 'o') ? (!lst) : lst;
        build(idx + 1, nxt, cur);
    }
}

int main() {

#ifndef ONLINE_JUDGE
    freopen("in.in", "r", stdin);
    //freopen("out.in", "w", stdout);
#endif
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> str;

    loop(f, 2) {
        loop(l, 2) {
            F = f, L = l;
            visid++;
            if (solve(0, f, l)) {
                build(0, f, l);
                cout << ans << endl;
                return 0;
            }
        }
    }

    cout << -1 << endl;

    return 0;
}
