#include<cstdio>
#include<cstring>
using namespace std;
#define ll long long
const ll mod = 1e9 + 7;
char s[100005];
int ans[100005];
int n,flag;
int check(int i,int x)
{
    int l = i - 1,r = i + 1;
    if(i == 1)l = n;
    if(i == n)r = 1;
    if(x)
    {
        if((s[i] == '0' && ans[r] != ans[l]) || (s[i] == 'x' && ans[r] == ans[l]))
            return true;
        else return false;
    }
    else
    {
        if((s[i] == 'x' && ans[r] != ans[l]) || (s[i] == 'o' && ans[r] == ans[l]))
            return true;
        else return false;
    }
}
void dfs(int h,int x)//x = 1ÀÇ£¬x = 0Ñò
{
    if(flag)return;
    ans[h] = x;
    if(h > n)return;
    if(h == n && check(n,x) && check(1,ans[1]))
    {
        flag = 1;
        return ;
    }
    if(x)
    {
        if(s[h] == 'o')
        {
            dfs(h + 1,ans[h - 1]^1);
        }
        else {
            dfs(h + 1,ans[h - 1]);
        }
    }
    else {
        if(s[h] == 'o')
        {
            dfs(h + 1,ans[h - 1]);
        }
        else {
            dfs(h + 1,ans[h - 1]^1);
        }
    }
}
int main()
{
    while(~scanf("%d",&n))
    {
        scanf("%s",s + 1);
        flag = 0;
        memset(ans,0,sizeof ans);
        ans[1] = 1;
        dfs(2,1);
        if(!flag)
        {
            memset(ans,0,sizeof ans);
            ans[1] = 1;
            dfs(2,0);
        }
        ans[1] = 0;
        if(!flag)
        {
            memset(ans,0,sizeof ans);
            ans[1] = 0;
            dfs(2,0);
        }
        if(!flag)
        {
            memset(ans,0,sizeof ans);
            ans[1] = 0;
            dfs(2,1);
        }
        if(flag)
        {
            for (int i = 1; i <= n; i++)
            {
                if(ans[i])
                    printf("W");
                else printf("S");
            }
            printf("\n");
        }
        else printf("-1\n");
    }
}
