using System;
using System.Collections.Generic;
using System.Linq;

namespace x
{
    class Program
    {
        static void Main(string[] args)
        {
            var animalCount = IOUtils.ReadInt();
            var answers = Console.ReadLine().Select(c => c == 'o').ToArray();

            if (animalCount != answers.Length)
            {
                throw new InvalidProgramException();
            }

            var candidates = new[]
            {
                "SS",
                "SW",
                "WS",
                "WW"
            };
            foreach (var cand in candidates)
            {

                var results = new char[animalCount];
                for (int i = 0; i < answers.Length; i++)
                {
                    if (i < 2) {
                        results[i] = cand[i];
                        continue;
                    }

                    var next = selectNext(results[i-2], results[i-1], answers[i-1]);
                    results[i] = next;
                }

                var isValid = checkIsValid(answers, results);
                if (isValid)
                {
                    System.Console.WriteLine(new string(results.ToArray()));
                    return;
                }
            }

            System.Console.WriteLine(-1);
        }

        private static char opposite(char target) {
            if (target =='S') return 'W';
            if (target =='W') return 'S';
            throw new ArgumentException();
         }
        private static char selectNext(char pre, char current, bool answer) {
            if (current == 'S') return answer ? pre : opposite(pre);
            if (current == 'W') return answer ? opposite(pre) : pre;
            throw new ArgumentException();
        }

        private static bool checkIsValid(Boolean[] answers, IReadOnlyList<char> result)
        {
            var first = result[0];
            if (selectNext(result[result.Count -2], result[result.Count -1], answers[answers.Length -1]) != first) {
                return false;
            }
            var second = result[1];
            if (selectNext(result[result.Count - 1], result[0], answers[0]) != second) {
                return false;
            }

            return true;
        }
        
    }


    
    static class IOUtils
    {
        // public static (int a, int b) Read2Ints()
        // {
        //     var vals = ReadInts();
        //     return (vals[0], vals[1]);
        // }
        // public static (int a, int b, int c) Read3Ints()
        // {
        //     var vals = ReadInts();
        //     return (vals[0], vals[1], vals[2]);
        // }
        public static IEnumerable<int[]> ReadIntLines(int count)
        {
            for (int i = 0; i < count; i++)
            {
                yield return ReadInts();
            }
        }
        public static IEnumerable<long[]> ReadLongLines(int count)
        {
            for (int i = 0; i < count; i++)
            {
                yield return ReadLongs();
            }
        }
        public static int ReadInt()
        {
            return int.Parse(Console.ReadLine());
        }
        public static long ReadLong()
        {
            return long.Parse(Console.ReadLine());
        }
        public static ulong ReadUlong()
        {
            return ulong.Parse(Console.ReadLine());
        }
        public static int[] ReadInts()
        {
            return Console.ReadLine().Split(' ').Select(v => int.Parse(v)).ToArray();
        }
        public static long[] ReadLongs()
        {
            return Console.ReadLine().Split(' ').Select(v => long.Parse(v)).ToArray();
        }

        public static void WriteNums(params int[] nums)
        {
            Console.WriteLine(string.Join(" ", nums));
        }
    }
}


Measured memory_bytes: 13908