#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<int, int>;
const ll MOD = 1000000007;

int N;
string S;
// const int wolf = N, sheep = N+1;
int wolf, sheep;

class UnionFind{
public:
    vector<int> par;
    vector<int> rank;
    UnionFind(){}
    UnionFind(int n){
        init(n);
    }
    void init(int n){
        par.resize(n);
        for(int i=0;i<n;i++){
            par[i] = i;
        }
        rank.assign(n, 0);
    }
    int find(int x){
        if(par[x] == x){
            return x;
        }else{
            return par[x] = find(par[x]);
        }
    }
    void unite(int x,int y){
        x = find(x);
        y = find(y);
        if(x == y) return;

        if(rank[x] < rank[y]){
            par[x] = y;
        }else{
            par[y] = x;
            if(rank[x] == rank[y]) rank[x]++;
        }
    }
    bool same(int x,int y){
        return find(x)==find(y);
    }
};

void arange(UnionFind& uf){
    for(int i=1;i<N-1;i++){
        int li = i - 1, ri = i + 1;
        if(uf.same(i, wolf)){
            if(S[i] == 'o'){
                if(uf.same(li, wolf)){
                    uf.unite(ri, sheep);
                }else{
                    uf.unite(ri, wolf);
                }
            }else{
                if(uf.same(li, sheep)){
                    uf.unite(ri, sheep);
                }else{
                    uf.unite(ri, wolf);
                }
            }
        }else{
            if(S[i] == 'x'){
                if(uf.same(li, wolf)){
                    uf.unite(ri, sheep);
                }else{
                    uf.unite(ri, wolf);
                }
            }else{
                if(uf.same(li, sheep)){
                    uf.unite(ri, sheep);
                }else{
                    uf.unite(ri, wolf);
                }
            }
        }
    }
}

int main(){
    cin >> N;
    cin >> S;
    wolf = N;
    sheep = N+1;

    bool ok = false;
    UnionFind uf;
    for(int i=0;i<4;i++){
        uf.init(N + 2);
        if(i&1) uf.unite(0, wolf);
        else uf.unite(0, sheep);
        if((i>>1)&1) uf.unite(1, wolf);
        else uf.unite(1, sheep);
        arange(uf);
        if(uf.same(N-1, sheep)){
            if(S[N-1] == 'o'){
                if(!uf.same(0, N-2)){
                    continue;
                }
            }else{
                if(uf.same(0, N-2)){
                    continue;
                }
            }
        }else{
            if(S[N-1] == 'x'){
                if(!uf.same(0, N-2)){
                    continue;
                }
            }else{
                if(uf.same(0, N-2)){
                    continue;
                }
            }
        }
        if(uf.same(0, sheep)){
            if(S[0] == 'o'){
                if(uf.same(1, N-1)){
                    ok = true;
                    break;
                }
            }else{
                if(!uf.same(1, N-1)){
                    ok = true;
                    break;
                }
            }
        }else{
            if(S[0] == 'x'){
                if(uf.same(1, N-1)){
                    ok = true;
                    break;
                }
            }else{
                if(!uf.same(1, N-1)){
                    ok = true;
                    break;
                }
            }
        }
    }

    if(ok){
        for(int i=0;i<N;i++){
            if(uf.same(i, sheep)){
                cout << "S";
            }else{
                cout << "W";
            }
        }
        cout << endl;
    }else{
        cout << -1 << endl;
    }
    return 0;
}

Measured memory_bytes: 1408