#include <bits/stdc++.h>
#define rep(i,n) for(int i=0; i<(n); i++)
#define int long long
#define double long double
#define mod 1000000007
#define F first
#define S second
#define P pair<long long,long long>
#define all(a) a.begin(),a.end()
#define INF 1000000000000000000
#define endl '\n'
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
using namespace std;

int sw[200010];  //0...sheep, 1...wolf

signed main(){
    int n; string s; cin>>n>>s;
    bool can=true;
    fill(sw,sw+n,0);
    sw[0]=sw[1]=0;
    for(int i=1; i<=n-2; i++){
        if(s.at(i)=='o'){
            if(sw[i]==0){
                sw[i+1]=sw[i-1];
            }else{
                sw[i+1]=(sw[i-1]+1)%2;
            }
        }else{
            if(sw[i]==0){
                sw[i+1]=(sw[i-1]+1)%2;
            }else{
                sw[i+1]=sw[i-1];
            }
        }
    }
    if(((sw[n-1]==0 and s.at(n-1)=='o') or (sw[n-1]==1 and s.at(n-1)=='x')) and sw[n-2]!=sw[0])can=false;
    if(((sw[n-1]==0 and s.at(n-1)=='x') or (sw[n-1]==1 and s.at(n-1)=='o')) and sw[n-2]==sw[0])can=false;
    if(((sw[0]==0 and s.at(0)=='o') or (sw[0]==1 and s.at(0)=='x')) and sw[n-1]!=sw[1])can=false;
    if(((sw[0]==0 and s.at(0)=='x') or (sw[0]==1 and s.at(0)=='o')) and sw[n-1]==sw[1])can=false;
    if(can){
        rep(i,n){
            cout<<(sw[i]==0?'S':'W');
        }
        cout<<endl;
        return 0;
    }
    can=true;
    fill(sw,sw+n,0);
    sw[0]=sw[1]=1;
    for(int i=1; i<=n-2; i++){
        if(s.at(i)=='o'){
            if(sw[i]==0){
                sw[i+1]=sw[i-1];
            }else{
                sw[i+1]=(sw[i-1]+1)%2;
            }
        }else{
            if(sw[i]==0){
                sw[i+1]=(sw[i-1]+1)%2;
            }else{
                sw[i+1]=sw[i-1];
            }
        }
    }
    if(((sw[n-1]==0 and s.at(n-1)=='o') or (sw[n-1]==1 and s.at(n-1)=='x')) and sw[n-2]!=sw[0])can=false;
    if(((sw[n-1]==0 and s.at(n-1)=='x') or (sw[n-1]==1 and s.at(n-1)=='o')) and sw[n-2]==sw[0])can=false;
    if(((sw[0]==0 and s.at(0)=='o') or (sw[0]==1 and s.at(0)=='x')) and sw[n-1]!=sw[1])can=false;
    if(((sw[0]==0 and s.at(0)=='x') or (sw[0]==1 and s.at(0)=='o')) and sw[n-1]==sw[1])can=false;
    if(can){
        rep(i,n){
            cout<<(sw[i]==0?'S':'W');
        }
        cout<<endl;
        return 0;
    }
    can=true;
    fill(sw,sw+n,0);
    sw[0]=0; sw[1]=1;
    for(int i=1; i<=n-2; i++){
        if(s.at(i)=='o'){
            if(sw[i]==0){
                sw[i+1]=sw[i-1];
            }else{
                sw[i+1]=(sw[i-1]+1)%2;
            }
        }else{
            if(sw[i]==0){
                sw[i+1]=(sw[i-1]+1)%2;
            }else{
                sw[i+1]=sw[i-1];
            }
        }
    }
    if(((sw[n-1]==0 and s.at(n-1)=='o') or (sw[n-1]==1 and s.at(n-1)=='x')) and sw[n-2]!=sw[0])can=false;
    if(((sw[n-1]==0 and s.at(n-1)=='x') or (sw[n-1]==1 and s.at(n-1)=='o')) and sw[n-2]==sw[0])can=false;
    if(((sw[0]==0 and s.at(0)=='o') or (sw[0]==1 and s.at(0)=='x')) and sw[n-1]!=sw[1])can=false;
    if(((sw[0]==0 and s.at(0)=='x') or (sw[0]==1 and s.at(0)=='o')) and sw[n-1]==sw[1])can=false;
    if(can){
        rep(i,n){
            cout<<(sw[i]==0?'S':'W');
        }
        cout<<endl;
        return 0;
    }
    can=true;
    fill(sw,sw+n,0);
    sw[0]=1; sw[1]=0;
    for(int i=1; i<=n-2; i++){
        if(s.at(i)=='o'){
            if(sw[i]==0){
                sw[i+1]=sw[i-1];
            }else{
                sw[i+1]=(sw[i-1]+1)%2;
            }
        }else{
            if(sw[i]==0){
                sw[i+1]=(sw[i-1]+1)%2;
            }else{
                sw[i+1]=sw[i-1];
            }
        }
    }
    if(((sw[n-1]==0 and s.at(n-1)=='o') or (sw[n-1]==1 and s.at(n-1)=='x')) and sw[n-2]!=sw[0])can=false;
    if(((sw[n-1]==0 and s.at(n-1)=='x') or (sw[n-1]==1 and s.at(n-1)=='o')) and sw[n-2]==sw[0])can=false;
    if(((sw[0]==0 and s.at(0)=='o') or (sw[0]==1 and s.at(0)=='x')) and sw[n-1]!=sw[1])can=false;
    if(((sw[0]==0 and s.at(0)=='x') or (sw[0]==1 and s.at(0)=='o')) and sw[n-1]==sw[1])can=false;
    if(can){
        rep(i,n){
            cout<<(sw[i]==0?'S':'W');
        }
        cout<<endl;
        return 0;
    }
    cout<<-1<<endl;
}

Measured memory_bytes: 1408