#include<cstdio>
#include<vector>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long LL;
const int INF=10005;
char s[100005];
char  ans[100005];
int n;
char a1,a2,a3;
int flag2;
char stro[4][4]={"SSS","WSW","SWW","WWS"};
char strx[4][4]={"SSW","WSS","SWS","WWW"};

void init()
{
    a1=a2=a3='.';
    flag2=0;
}

int judge(char a,char b)
{
//    cout<<a<<" "<<b<<endl;
    if (a!='.'&& a!=b)
        return 0;
    return 1;
}
int tell (int id ,char aa1,char aa2,char aa3)
{
    int flag=0;
    if (aa2=='S')
    {
        if (s[id]=='o')
        {
            if ( aa1==aa3)
                flag=1;
        }
        else if (aa1!=aa3)
            flag=1;
    }
    else if (aa2=='W')
    {
        if (s[id]=='o')
        {
            if (aa1!=aa3)
                flag=1;
        }
        else if ( aa1==aa3)
            flag=1;
    }
//    cout<<flag<<"****"<<endl;
    return flag;
}

int check(int id,int &flag1)
{
    if (flag1 || id>=n)return 1;
    if(s[id]=='o')
    {
        int cmd1,cmd2;
        if (ans[id]=='.') cmd1=0,cmd2=3;
        else if (ans[id]=='S') cmd1=0,cmd2=1;
        else if (ans[id]=='W') cmd1=2,cmd2=3;
        int flag=0;
        for (int i=cmd1;i<=cmd2;i++)
        {
            if (!judge(ans[(id+1)%n],stro[i][2])||!judge(ans[(id)%n],stro[i][1])||!judge(ans[(id-1+n)%n],stro[i][0]) || !tell(id,stro[i][0],stro[i][1],stro[i][2]))
            {
                continue;
            }
            char b1=ans[(id+1)%n];
            char b2=ans[id%n];
            char b3=ans[(id-1+n)%n];
            ans[(id+1)%n]=stro[i][2];
//            cout<<(id+1)%n<<" "<<ans[(id+1)%n]<<endl;
            ans[id%n]=stro[i][1];
//            cout<<(id)%n<<" "<<ans[(id)%n]<<endl;
            ans[(id-1+n)%n]=stro[i][0];
//            cout<<(id-1+n)%n<<" "<<ans[(id-1+n)%n]<<endl;
            if (check(id+1,flag1))
            {
                flag=1;
                if(id+1>=n)
                {
                    a1=ans[(id-1+n)%n];
                    a2=ans[(id)%n];
                    a3=ans[(id+1)%n];
                    flag1=1;
                    return flag;
                }
            }
            ans[(id+1)%n]=b1;
            ans[id%n]=b2;
            ans[(id-1+n)%n]=b3;
        }

        return flag;
    }
    else
    {
        int cmd1,cmd2;
        if (ans[id]=='.') cmd1=0,cmd2=3;
        else if (ans[id]=='S') cmd1=0,cmd2=1;
        else if (ans[id]=='W') cmd1=2,cmd2=3;
        int flag=0;
        for (int i=cmd1;i<=cmd2;i++)
        {
            if (!judge(ans[(id+1)%n],strx[i][2])||!judge(ans[(id)%n],strx[i][1])||!judge(ans[(id-1+n)%n],strx[i][0])|| !tell(id,strx[i][0],strx[i][1],strx[i][2]))
            {
                continue;
            }
            char b1=ans[(id+1)%n];
            char b2=ans[id%n];
            char b3=ans[(id-1+n)%n];
            ans[(id+1)%n]=strx[i][2];
//            cout<<(id+1)%n<<" "<<ans[(id+1)%n]<<endl;
            ans[id%n]=strx[i][1];
//            cout<<(id)%n<<" "<<ans[(id)%n]<<endl;
            ans[(id-1+n)%n]=strx[i][0];
//            cout<<(id-1+n)%n<<" "<<ans[(id-1+n)%n]<<endl;
            if ( check(id+1,flag1))
            {
                flag=1;
                if(id+1>=n)
                {
                    a1=ans[(id-1+n)%n];
                    a2=ans[(id)%n];
                    a3=ans[(id+1)%n];
                    flag1=1;
                    return flag;
                }
            }
            ans[(id+1)%n]=b1;
            ans[id%n]=b2;
            ans[(id-1+n)%n]=b3;
        }

        return flag;
    }
}

void sett()
{
//    if (a1=='.'||a2=='.'||a3=='.')
//    {
//        cout<<"-1"<<endl;
//        flag2=1;
//        return;
//    }
    ans[n-2]=a1;
    ans[n-1]=a2;
    ans[0]=a3;
//    cout<<a3;
    for (int i=1;i<n-2;i++)
    {
        if (s[i-1]=='o')
        {
            for (int j=0;j<4;j++)
            {
                int idd=(i-2+n)%n;
                if (ans[idd]==stro[j][0] && ans[i-1]==stro[j][1])
                {
                    ans[i]=stro[j][2];
                }
            }
        }
        else if (s[i-1]=='x')
        {
            for (int j=0;j<4;j++)
            {
                int idd=(i-2+n)%n;
                if (ans[idd]==strx[j][0] && ans[i-1]==strx[j][1])
                {
                    ans[i]=strx[j][2];
                }
            }
        }
//        cout<<ans[i];
    }
//    cout<<a1<<a2<<endl;
//string cc="";
//    cc+=ans[i];
//    cout<<ans.size()<<" "<<cc.size()<<endl;
printf("%s\n",ans);
}

int main()
{
    while (~scanf("%d",&n))
    {
        init();
        scanf("%s",s);
        for (int i=0;i<n;i++)
        {
            ans[i]='.';
        }
        int flag1=0;
         if (check(0,flag1))
         {
             sett();
         }
         else if (!flag2) cout<<"-1"<<endl;
    }
}


Measured memory_bytes: 11520