// Slower C++ solution:
#include <iostream>

#include <algorithm>

#include <cstdlib>

#include <cstring>

#include <cstdio>

#include <string>

#include <math.h>

#include <map>

#include <set>

#define sc scanf

#define pr printf

using namespace std;

typedef long long ll;

const int N = 100000+100;

bool ans[N];

char str[N];

bool hander_ans(int n);

bool is_right(int n);

int main()

{

    int i,j,n;

    while(~sc("%d",&n))

    {

        sc(" %s",str);



        ans[0] = 0 , ans[1] = 0;

        if(hander_ans(n)) continue;



        ans[0] = 0 , ans[1] = 1;

        if(hander_ans(n)) continue;



        ans[0] = 1 , ans[1] = 0;

        if(hander_ans(n)) continue;



        ans[0] = 1 , ans[1] = 1;

        if(hander_ans(n)) continue;



        pr("-1\n");

    }

    return 0;

}

bool hander_ans(int n)

{

    int i,j;

    for(i=2; i<n; i++)

    {

        if(ans[i-1] == 0)

        {

            if(str[i-1] == 'o')

                ans[i] = ans[i-2];

            else

                ans[i] = !ans[i-2];

        }

        else

        {

            if(str[i-1] == 'o')

                ans[i] = !ans[i-2];

            else

                ans[i] = ans[i-2];

        }

    }

    int flag = 0;

    if(ans[n-1] == 0)

    {

        if(str[n-1] == 'o' && ans[0] == ans[n-2]) flag = 1;

        if(str[n-1] == 'x' && ans[0] != ans[n-2]) flag = 1;

    }

    else

    {

        if(str[n-1] == 'o' && ans[0] != ans[n-2]) flag = 1;

        if(str[n-1] == 'x' && ans[0] == ans[n-2]) flag = 1;

    }



    if(ans[0] == 0)

    {

        if(str[0] == 'o' && ans[1] == ans[n-1]) flag += 1;

        if(str[0] == 'x' && ans[1] != ans[n-1]) flag += 1;

    }

    else

    {

        if(str[0] == 'o' && ans[1] != ans[n-1]) flag += 1;

        if(str[0] == 'x' && ans[1] == ans[n-1]) flag += 1;

    }

    if(flag == 2)

    {

        for(i=0; i<n; i++)

          if(ans[i]) pr("W");

          else pr("S");

         pr("\n");

         return 1;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 4.96643264818343x):
#include <stdio.h>

#include <algorithm>

using namespace std;



int main()

{

    char s[4][2]={'S','S','S','W','W','S','W','W'},a[100005],b[100005];

    int n,i,k,flag;

    scanf("%d",&n);

    scanf("%s",a);

    for(k=0;k<4;k++)

    {   flag=0;

        b[0]=s[k][0],b[1]=s[k][1];

        char temp;

        if(a[0]=='o'&&b[0]=='S')temp=b[1];

        else if(a[0]=='x'&&b[0]=='S')

        {

            if(b[1]=='S')temp='W';

            else temp='S';

        }

        else if(a[0]=='x'&&b[0]=='W')temp=b[1];

        else if(a[0]=='o'&&b[0]=='W')

        {

         if(b[1]=='W')temp='S';

         else temp='W';

        }

        for(i=1;i<n;i++)

        {

          if(a[i]=='o'&&b[i]=='S')b[i+1]=b[i-1];

        else if(a[i]=='x'&&b[i]=='S')

        {

            if(b[i-1]=='S')b[i+1]='W';

            else b[i+1]='S';

        }

        else if(a[i]=='x'&&b[i]=='W')b[i+1]=b[i-1];

        else if(a[i]=='o'&&b[i]=='W')

        {

         if(b[i-1]=='W')b[i+1]='S';

         else b[i+1]='W';

        }

        }

        if(b[n]==b[0]&&temp==b[n-1])

        {

            flag=1;

            break;

        }

    }

    b[n]='\0';

    if(flag)printf("%s\n",b);

    else printf("-1\n");

    return 0;

}