import std.stdio;
import std.string;
import std.array;
import std.algorithm;
import std.conv;
import std.range;
import std.functional;
import std.bigint;
import std.typecons;


void main(string[] args) {
    readln;
    string s = readln.chomp;

    enum Transit {
        StoS,
        StoW,
        WtoS,
        WtoW,
    }

    alias Reasoner = Tuple!(Transit, "assumption", Transit, "temp");
    Reasoner[4] reasoner;
    string[4] ans_candidate;
    if (s[0] == 'o') {
        reasoner[0].assumption = Transit.StoS;
        ans_candidate[0] = "S";
        reasoner[0].temp = Transit.StoS;
        
        reasoner[1].assumption = Transit.StoW;
        ans_candidate[1] = "W";
        reasoner[1].temp = Transit.WtoW;

        reasoner[2].assumption = Transit.WtoS;
        ans_candidate[2] = "S";
        reasoner[2].temp = Transit.StoW;

        reasoner[3].assumption = Transit.WtoW;
        ans_candidate[3] = "W";
        reasoner[3].temp = Transit.WtoS;
    } else if (s[0] == 'x') {
        reasoner[0].assumption = Transit.StoS;
        ans_candidate[0] = "S";
        reasoner[0].temp = Transit.StoW;

        reasoner[1].assumption = Transit.StoW;
        ans_candidate[1] = "W";
        reasoner[1].temp = Transit.WtoS;

        reasoner[2].assumption = Transit.WtoS;
        ans_candidate[2] = "S";
        reasoner[2].temp = Transit.StoS;

        reasoner[3].assumption = Transit.WtoW;
        ans_candidate[3] = "W";
        reasoner[3].temp = Transit.WtoW;
    } else {
        throw new Exception("input error");
    }

    auto o_table = [
        Transit.StoS : Transit.StoS,
        Transit.StoW : Transit.WtoW,
        Transit.WtoS : Transit.StoW,
        Transit.WtoW : Transit.WtoS,
    ];
    auto x_table = [
        Transit.StoS : Transit.StoW,
        Transit.StoW : Transit.WtoS,
        Transit.WtoS : Transit.StoS,
        Transit.WtoW : Transit.WtoW,
    ];

    foreach (c; s[1..$])
    {
        if (c == 'o') {
            foreach(i; 0..4) 
            {
                if (reasoner[i].temp.among(Transit.StoS, Transit.WtoS)) ans_candidate[i] ~= "S";
                else ans_candidate[i] ~= "W";
                reasoner[i].temp = o_table[reasoner[i].temp];
            }
        } else if (c == 'x') {
            foreach(i; 0..4) 
            {
                if (reasoner[i].temp.among(Transit.StoS, Transit.WtoS)) ans_candidate[i] ~= "S";
                else ans_candidate[i] ~= "W";
                reasoner[i].temp = x_table[reasoner[i].temp];
            }
        } else {
            throw new Exception("input error");
        }
    }

    foreach (i; 0..5) {
        if (i == 5){
            (-1).writeln;
            break;
        }
        if (reasoner[i].temp == reasoner[i].assumption) {
            ans_candidate[i].writeln;
            break;
        }
    }

}
