using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
 
namespace AtCoder
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var sr = new InputReader(Console.In);
            //var sr = new InputReader(new StreamReader("input.txt"));
            var task = new Task();
            using (var sw = Console.Out)
            //using (var sw = new StreamWriter("output.txt"))
            {
                task.Solve(sr, sw);
                //Console.ReadKey();
            }
        }
    }

    internal class Task
    {
        public void Solve(InputReader sr, TextWriter sw)
        {
            var n = sr.NextInt32();
            var str = sr.NextString();
            for (var i = 0; i < 2; i++)
            {
                for (var j = 0; j < 2; j++)
                {
                    for (var k = 0; k < 2; k++)
                    {
                        var ch1 = i == 0 ? 'S' : 'W';
                        var ch2 = j == 0 ? 'S' : 'W';
                        var ch3 = k == 0 ? 'S' : 'W';
                        var answ = new char[n];
                        var r = CanSheep(n, str, ch1, ch2, ch3, answ);
                        if (r)
                        {
                            sw.WriteLine(new String(answ));
                            return;
                        }
                    }
                }
            }

            sw.WriteLine(-1);
        }

        private bool CanSheep(int n, string str, char ch1, char ch2, char ch3, char[] answ)
        {
            answ[0] = ch1;
            answ[1] = ch2;
            answ[2] = ch3;
            for (var i = 2; i < str.Length - 1; i++)
            {
                if (answ[i] == 'S')
                {
                    if (str[i] == 'o')
                    {
                        if (i + 1 < str.Length)
                        {
                            if (answ[i - 1] == 'S')
                            {
                                answ[i + 1] = 'S';
                            }
                            else
                            {
                                answ[i + 1] = 'W';
                            }
                        }
                    }
                    else
                    {
                        if (i + 1 < str.Length)
                        {
                            if (answ[i - 1] == 'S')
                            {
                                answ[i + 1] = 'W';
                            }
                            else
                            {
                                answ[i + 1] = 'S';
                            }
                        }
                    }
                }
                else
                {
                    if (str[i] == 'o')
                    {
                        if (i + 1 < str.Length)
                        {
                            if (answ[i - 1] == 'S')
                            {
                                answ[i + 1] = 'W';
                            }
                            else
                            {
                                answ[i + 1] = 'S';
                            }
                        }
                    }
                    else
                    {
                        if (i + 1 < str.Length)
                        {
                            if (answ[i - 1] == 'S')
                            {
                                answ[i + 1] = 'S';
                            }
                            else
                            {
                                answ[i + 1] = 'W';
                            }
                        }
                    }
                }
            }


            for (var i = 0; i < str.Length; i++)
            {
                char prev;
                if (i - 1 >= 0)
                {
                    prev = answ[i - 1];
                }
                else
                {
                    prev = answ[answ.Length - 1];
                }
                char next;
                if (i + 1 < str.Length)
                {
                    next = answ[i + 1];
                }
                else
                {
                    next = answ[0];
                }
                if (answ[i] == 'S')
                {
                    if (str[i] == 'o')
                    {
                        if (prev != next)
                            return false;
                    }
                    else
                    {
                        if (prev == next)
                            return false;
                    }
                }
                else
                {
                    if (str[i] == 'o')
                    {
                        if (prev == next)
                            return false;
                    }
                    else
                    {
                        if (prev != next)
                            return false;
                    }
                }
            }

            return true;
        }
    }
}

internal class InputReader : IDisposable
{
    private bool isDispose;
    private readonly TextReader sr;

    public InputReader(TextReader stream)
    {
        sr = stream;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    public string NextString()
    {
        var result = sr.ReadLine();
        return result;
    }

    public int NextInt32()
    {
        return Int32.Parse(NextString());
    }

    public long NextInt64()
    {
        return Int64.Parse(NextString());
    }

    public string[] NextSplitStrings()
    {
        return NextString()
            .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
    }

    public T[] ReadArray<T>(Func<string, CultureInfo, T> func)
    {
        return NextSplitStrings()
            .Select(s => func(s, CultureInfo.InvariantCulture))
            .ToArray();
    }

    public T[] ReadArrayFromString<T>(Func<string, CultureInfo, T> func, string str)
    {
        return
            str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                .Select(s => func(s, CultureInfo.InvariantCulture))
                .ToArray();
    }

    protected void Dispose(bool dispose)
    {
        if (!isDispose)
        {
            if (dispose)
                sr.Close();
            isDispose = true;
        }
    }

    ~InputReader()
    {
        Dispose(false);
    }
}

Measured memory_bytes: 13264