#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rep2(i, x, n) for (int i = x; i < (n); i++)
#define all(n) begin(n), end(n)
struct cww
{
    cww()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
    }
} star;
const long long INF = numeric_limits<long long>::max();
typedef long long ll;
typedef vector<int> vint;
typedef vector<char> vchar;
typedef vector<vector<int>> vvint;
typedef vector<ll> vll;
typedef vector<vector<ll>> vvll;
typedef unsigned long long ull;
template <class T>
bool chmax(T &a, const T &b)
{
    if (a < b)
    {
        a = b;
        return 1;
    }
    return 0;
}
template <class T>
bool chmin(T &a, const T &b)
{
    if (b < a)
    {
        a = b;
        return 1;
    }
    return 0;
}

vector<pair<char, int>> run_length_compress(string S)
{
    vector<pair<char, int>> res;
    int n = S.size(), cnt = 1;
    for (int i = 0; i < n - 1; i++)
    {
        if (S[i] == S[i + 1])
        {
            cnt++;
        }
        else
        {
            res.push_back({S[i], cnt});
            cnt = 1;
        }
    }
    res.push_back({S.back(), cnt});
    return res;
}
int N;
string s;
const char x = 'S' xor 'W';
void solve(char c, char d)
{
    string ans;
    ans.resize(N);
    ans[0] = c;
    ans[1] = d;

    for (size_t i = 1; i < N - 1; i++)
    {
        if (ans[i] == 'W')
        {
            if (s[i] == 'o')
            {
                ans[(i + 1) % N] = x xor ans[i - 1];
            }
            else
            {
                ans[(i + 1) % N] = ans[i - 1];
            }
        }
        else
        {
            if (s[i] == 'o')
            {
                ans[(i + 1) % N] = ans[i - 1];
            }
            else
            {
                ans[(i + 1) % N] = x xor ans[i - 1];
            }
        }
    }
    for (size_t i = 0; i < N; i++)
    {
        if (i == N - 1)
        {
            if (s[i] == 'o' and ((ans[i] == 'S' and ans[i - 1] != ans[0]) or (ans[i] == 'W' and ans[i - 1] == ans[0])))
            {
                return;
            }
            if(s[i] == 'x' and ((ans[i] == 'S' and ans[i - 1] == ans[0]) or (ans[i] == 'W' and ans[i - 1] != ans[0])))
            {
                return;
            }
        }

        else if (i == 0)
        {
            if (s[i] == 'o' and ((ans[i] == 'S' and ans[N - 1] != ans[i+1]) or (ans[i] == 'W' and ans[N - 1] == ans[i+1])))
            {
                return;
            }
            if(s[i] == 'x' and ((ans[i] == 'S' and ans[N - 1] == ans[i+1]) or (ans[i] == 'W' and ans[N - 1] != ans[i+1])))
            {
                return;
            }
        }
        else
        {
            if (s[i] == 'o' and ((ans[i] == 'S' and ans[i - 1] != ans[i+1]) or (ans[i] == 'W' and ans[i - 1] == ans[i+1])))
            {
                return;
            }
            if(s[i] == 'x' and ((ans[i] == 'S' and ans[i - 1] == ans[i+1]) or (ans[i] == 'W' and ans[i - 1] != ans[i+1])))
            {
                return;
            }
        }
    }
    cout << ans << endl;
    exit(0);
}
int main()
{

    cin >> N;

    cin >> s;
    char c[] = {'S', 'W'};
    for (size_t i = 0; i < 2; i++)
    {
        for (size_t j = 0; j < 2; j++)
        {
            solve(c[i], c[j]);
        }
    }
    cout << -1 << endl;
    return 0;
}

Measured memory_bytes: 640