#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <string>
#define SS(i) scanf("%s",i)
#define SC(i) scanf("%d",&i)
#define SCC(i,j) scanf("%d%d",&i,&j)
#define SCCC(i,j,z) scanf("%d%d%d",&i,&j,&z)
#define PR(i) printf("%d\n",i)
#define LL long long
#define FF(i,a,b) for(int i=a;i<=b;++i)
#define RR(i,a,b) for(int i=a;i>=b;--i)
#define CL(i,x) memset(i,x,sizeof(i))
#define IN freopen("in.txt","r",stdin)
#define OUT  freopen("out.txt","w",stdout)
#define PB(i) push_back(i)
#define lson x,m,rt<<1
#define rson m+1,y,rt<<1|1
using namespace std;
const int N=1e5+10;
const int inf = 2e9;
int n;
char s[N];
int vis[N];
int getxia(int cur)
{
    if(cur==n) return 1;
    return cur+1;
}
int getsh(int cur)
{
    if(cur==1) return n;
    return cur-1;
}
int check(int cur)
{
    if(vis[cur]==1){
        if(s[cur]=='o') return vis[getsh(cur)] == vis[getxia(cur)];
        else return !(vis[getsh(cur)] == vis[getxia(cur)]);
    }
    else if(vis[cur]==0){
        if(s[cur]=='x') return vis[getsh(cur)] == vis[getxia(cur)];
        else return !(vis[getsh(cur)] == vis[getxia(cur)]);
    }
}
int main()
{


    SC(n);
    SS(s+1);
   // int ok = 0;
    vis[1] = 1;   ///S
    if(s[1] == 'o'){
        vis[getsh(1)] = 1; vis[getxia(1)] = 1;///S S
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
        ///
        vis[getsh(1)] = 0; vis[getxia(1)] = 0;///W W
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
    }
    else if(s[1]=='x'){
        vis[getsh(1)] = 0; vis[getxia(1)] = 1;///W S
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
        ///
        vis[getsh(1)] = 1; vis[getxia(1)] = 0;///S W
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
    }
    ///
    vis[1] = 0;///W
    if(s[1] == 'o'){
        vis[getsh(1)] = 0; vis[getxia(1)] = 1;///W S
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
        ///
        vis[getsh(1)] = 1; vis[getxia(1)] = 0;///S W
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
    }
    else if(s[1]=='x'){
        vis[getsh(1)] = 1; vis[getxia(1)] = 1;///S S
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
        ///
        vis[getsh(1)] = 0; vis[getxia(1)] = 0;///W W
        FF(i, 2, n-2)
        {
            if(vis[i]==1){
                if(s[i]=='o'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
            else if(vis[i]==0){
                if(s[i]=='x'){
                    vis[getxia(i)] = vis[getsh(i)];
                }
                else vis[getxia(i)] = vis[getsh(i)] ^ 1;
            }
        }
        if(check(n-1) && check(n)) goto c;
    }


    puts("-1"); return 0;

    c:;
    FF(i, 1, n){
        if(vis[i]==1) putchar('S');
        else putchar('W');
    }
    puts("");
    return 0;
}


Measured memory_bytes: 768