#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int (i)=(0);(i)<(int)(n);++(i))
#define ALL(x) x.begin(),x.end()
typedef pair<int, int> P;
typedef long long ll;

int N;
string t;
string ans;

bool flag = false;
bool out=false;

void bfs(int n) {

    if (flag) return;

    if (n == N-2) {

        if (t[n] == 'o') {
            if (ans[n] == 'S') {
                if (ans[n-1] == 'S' && ans[n+1] == 'S') flag = true;
                else if (ans[n-1] == 'W' && ans[n+1] == 'W') flag = true;
            }
            else {
                if (ans[n-1] == 'S' && ans[n+1] == 'W') flag = true;
                else if (ans[n-1] == 'W' && ans[n+1] == 'S') flag = true;
            }
        }
        else {
            if (ans[n] == 'S') {
                if (ans[n-1] == 'S' && ans[n+1] == 'W') flag = true;
                else if (ans[n-1] == 'W' && ans[n+1] == 'S') flag = true;
            }
            else {
                if (ans[n-1] == 'S' && ans[n+1] == 'S') flag = true;
                else if (ans[n-1] == 'W' && ans[n+1] == 'W') flag = true;
            }
        }

        if (flag) {
            flag = false;
            if (t[N-1] == 'o') {
                if (ans[N-1] == 'S') {
                    if (ans[n] == 'S' && ans[0] == 'S') flag = true;
                    else if (ans[n] == 'W' && ans[0] == 'W') flag = true;
                }
                else {
                    if (ans[n] == 'S' && ans[0] == 'W') flag = true;
                    else if (ans[n] == 'W' && ans[0] == 'S') flag = true;
                }
            }
            else {
                if (ans[N-1] == 'S') {
                    if (ans[n] == 'S' && ans[0] == 'W') flag = true;
                    else if (ans[n] == 'W' && ans[0] == 'S') flag = true;
                }
                else {
                    if (ans[n] == 'S' && ans[0] == 'S') flag = true;
                    else if (ans[n] == 'W' && ans[0] == 'W') flag = true;
                }
            }
        }

        if (flag && !out) { cout << ans << endl; out = true; }

        return;
    }

    if (!n) {
        if (t[0] == 'o') {
            ans[0]='S';
            ans[N-1]='S'; ans[1]='S'; bfs(n+1);
            ans[N-1]='W'; ans[1]='W'; bfs(n+1);

            ans[0]='W';
            ans[N-1]='W'; ans[1]='S'; bfs(n+1);
            ans[N-1]='S'; ans[1]='W'; bfs(n+1);
        }
        else if (t[0] == 'x') {
            ans[0]='S';
            ans[N-1]='S'; ans[1]='W'; bfs(n+1);
            ans[N-1]='W'; ans[1]='S'; bfs(n+1);

            ans[0]='W';
            ans[N-1]='W'; ans[1]='W'; bfs(n+1);
            ans[N-1]='S'; ans[1]='S'; bfs(n+1);
        }
    }
    else {

        if (ans[n] == 'S') {
            if (t[n] == 'o') {
                if (ans[n-1] == 'S') {
                    ans[n+1]='S';
                    bfs(n+1);
                }
                else if (ans[n-1] == 'W'){
                    ans[n+1]='W';
                    bfs(n+1);
                }
            }
            else {
                if (ans[n-1] == 'S') {
                    ans[n+1]='W';
                    bfs(n+1);
                }
                else if (ans[n-1] == 'W') {
                    ans[n+1]='S';
                    bfs(n+1);
                }
            }
        }
        else if (ans[n] == 'W'){
            if (t[n] == 'o') {
                if (ans[n-1] == 'S') {
                    ans[n+1] = 'W';
                    bfs(n+1);
                }
                else if (ans[n-1] == 'W') {
                    ans[n+1] = 'S';
                    bfs(n+1);
                }
            }
            else {
                if (ans[n-1] == 'S') {
                    ans[n+1] = 'S';
                    bfs(n+1);
                }
                else if (ans[n-1] == 'W'){
                    ans[n+1] = 'W';
                    bfs(n+1);
                }
            }
        }
    }

}

int main() {
    cin >> N >> t; ans=t;

    if (N == 3) {
        int maru=0;
        rep(i,N) if (t[i] == 'o') maru++;
        if (maru == 2 || maru == 1) {
            cout << -1 << endl;
            return 0;
        }
    }
    else if (N%2 == 0) {
        int maru=0;
        rep(i,N) {
            if (t[i] == 'x') {
                break;
            }
            maru++;
        }
        if (maru == N/2) {
            cout << "-1" << endl;
            return 0;
        }
    }

    int m=0, b=0;
    rep(i,N) {
        if (t[i]=='o') m++;
        else b++;
    }

    if (m == 1 || b == 1) {
        cout << -1 << endl;
        return 0;
    }

    bfs(0);
    if (!out) cout << -1 << endl;
}


Measured memory_bytes: 512