#include <bits/stdc++.h>
using namespace std;
#define Ios cin.tie(0);ios_base::sync_with_stdio(0)
#define endl '\n'
#define fixeddecimals cout.setf(ios::fixed); cout.precision(18)
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--)
#define iter(it,a) for(auto it=a.begin();it!=a.end();it++)
#define mp make_pair
#define pb push_back
#define F first
#define S second
#define ri(X) cin>>X
#define rii(X, Y) cin>>X>>Y
#define riii(X, Y, Z) cin>>X>>Y>>Z
#define dri(X) int X; cin>>X
#define drii(X, Y) int X, Y; cin>>X>>Y
#define driii(X, Y, Z) int X, Y, Z; cin>>X>>Y>>Z
#define vi vector<int>
#define vvi vector<vector<int> >
#define vvii vector<vector<pair<int,int> > >
#define pii pair<int,int> 
#define piii pair<int,pair <int,int> >
#define preturn(X) cout<<X<<endl<<flush; return 0
typedef long long ll;
//typedef int64_t ll; 
ll MOD=1e9+7;

bool a[100000+1]; 

int main(){
	int n;
	cin>>n;
	string s;
	cin>>s;
	map<bool,char> h;
	h[0] = 'W';
	h[1] = 'S';
	bool check;
	int x,y;
	a[0] = 1;
	a[n-1] = 1; //truth
	check =1;

	rep(i,0,n){
		if(i==0){
			y = n-1;
		}
		else{
			y = i-1;
		}
		x = (i+1)%n;

		if(s[i]=='o'){
			if(a[i]==0){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
		else{
			if(a[i]==1){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
	}
	if(check==1){
		rep(i,0,n){
			cout<<h[a[i]];
		}
		return 0;
	}

	a[0] = 1;
	a[n-1] = 0; //truth
	check =1;
	rep(i,0,n){

		if(i==0){
			y = n-1;
		}
		else{
			y = i-1;
		}
		x = (i+1)%n;

		if(s[i]=='o'){
			if(a[i]==0){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
		else{
			if(a[i]==1){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
	}
	if(check==1){
		rep(i,0,n){
			cout<<h[a[i]];
		}
		return 0;
	}

	a[0] = 0;
	a[n-1] = 1; //truth
	check =1;
	rep(i,0,n){

		if(i==0){
			y = n-1;
		}
		else{
			y = i-1;
		}
		x = (i+1)%n;

		if(s[i]=='o'){
			if(a[i]==0){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
		else{
			if(a[i]==1){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
	}
	if(check==1){
		rep(i,0,n){
			cout<<h[a[i]];
		}
		return 0;
	}

	a[0] = 0;
	a[n-1] = 0; //truth
	check =1;
	rep(i,0,n){

		if(i==0){
			y = n-1;
		}
		else{
			y = i-1;
		}
		x = (i+1)%n;

		if(s[i]=='o'){
			if(a[i]==0){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
		else{
			if(a[i]==1){
				if(i==n-2){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=1-a[y]){
						check=0;
					}	
				}
				a[x] = 1-a[y];				
			}
			else{
				if(i==n-2){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				else if(i==n-1){
					if(a[x]!=a[y]){
						check=0;
					}	
				}
				a[x] = a[y];
			}
		}
	}
	if(check==1){
		rep(i,0,n){
			cout<<h[a[i]];
		}
		return 0;
	}

	preturn(-1);
}

Measured memory_bytes: 640