#include <bits/stdc++.h>
using namespace std;
#define N 300100
const int mod=1e9+7;

int a[8][2],f[N][8];
char s[N];

int main()
{
	a[0][0]=1; a[0][1]=2;
	a[1][0]=3; a[1][1]=4;
	a[2][0]=5; a[2][1]=6;
	a[3][0]=a[3][1]=1;
	a[4][0]=1; a[4][1]=2;
	a[5][0]=7; a[5][1]=2;
	a[6][0]=a[6][1]=6;
	a[7][0]=a[7][1]=5;
	scanf("%s",s);
	int n=strlen(s);
	f[n][2]=f[n][6]=1;
	for (int i=n-1;i>=0;i--)
		for (int j=0;j<8;j++)
		{
			if (s[i]!='1') (f[i][j]+=f[i+1][a[j][0]])%=mod;
			if (s[i]!='0') (f[i][j]+=f[i+1][a[j][1]])%=mod;
		}
	printf("%d\n",f[0][0]);
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define modulo 1000000007
#define mod(mod_x) ((((long long)mod_x+modulo))%modulo)
#define Inf 100000000




int main(){
    
	int N;
	cin>>N;
	
	string S;
	cin>>S;
	
	for(int i=0;i<4;i++){
		string ans;
		if(i==0)ans="SS";
		if(i==1)ans="WW";
		if(i==2)ans="SW";
		if(i==3)ans="WS";
		
		for(int j=1;j<N+1;j++){
			char c = S[j%N];
			if(ans.back()=='W'){
				if(c=='o')c='x';
				else c='o';
			}
			if(c=='o'){
				ans += ans[ans.size()-2];
			}
			else{
				if(ans[ans.size()-2]=='W')ans+='S';
				else ans+='W';
			}

		}
		if(ans[0]==ans[N]&&ans[1]==ans[N+1]){
			cout<<ans.substr(0,N)<<endl;
			return 0;
		}
	}
	
	cout<<-1<<endl;
		
	
    return 0;
}

