#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
#define pob pop_back()
#define vll vector<ll>
#define pll pair<ll,ll>
#define vpll vector<pll>
#define prq priority_queue<ll>
#define psq priority_queue<ll,vector<ll>,greater<ll>>
#define rep(i, a, b) for (ll i = a; i < b; i++)
#define repi(i, b, a) for (ll i = b; i >= a; i--)
#define input(x) {for(auto &i : x) cin>>i;}
#define input1(x) {rep(i,1,n+1) cin>>x[i];}
#define output(x) {for(auto &i : x) cout<<i<<" ";}
#define inf INT_MAX
#define minf INT_MIN
#define MOD 1000000007
#define all(x) x.begin(),x.end()
#define nline "\n"
#define yes cout<<"YES"<<nline;
#define no cout<<"NO"<<nline;
// #define priyanshu_2401 1
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Debug
#ifdef priyanshu_2401
#define debug(x) cerr << #x<<" "; cerr<<x<<" "; cerr << endl;
#else
#define debug(x);
#endif
// Operator overloads
template<typename T1, typename T2> // cin >> pair<T1, T2>
istream& operator>>(istream &istream, pair<T1, T2> &p) { return (istream >> p.first >> p.second); }
template<typename T> // cin >> vector<T>
istream& operator>>(istream &istream, vector<T> &v){for (auto &it : v)cin >> it;return istream;}
template<typename T1, typename T2> // cout << pair<T1, T2>
ostream& operator<<(ostream &ostream, const pair<T1, T2> &p) { return (ostream << p.first << " " << p.second); }
template<typename T> // cout << vector<T>
ostream& operator<<(ostream &ostream, const vector<T> &c) { for (auto &it : c) cout << it << " "; return ostream; }
// Mathematical functions
ll gcd(ll a, ll b){if (b == 0)return a;return gcd(b, a % b);} //__gcd
ll lcm(ll a, ll b){return (a/gcd(a,b)*b);}
ll powermod(ll x, ll y, ll p){ll res = 1;x = x % p;if (x == 0) return 0;while (y > 0){if (y & 1)res = (res*x) % p;y = y>>1;x = (x*x) % p;}return res;}
ll modMultiply(ll x,ll y) {return ((x%MOD)*(y%MOD))%MOD;}
ll modAdd(ll x,ll y) {return ((x%MOD)+(y%MOD))%MOD;}
ll modSubtract(ll x,ll y) {return ((x%MOD)-(y%MOD)+MOD)%MOD;}
ll lengthOfNumber(ll x){ll count=0;while(x>0){count++;x/=10;}return count;}
vector<ll> fac(1002),inv(1002);
ll ncr(ll n,ll r){
if(n<r) return 0;
ll ans = modMultiply(modMultiply(fac[n],inv[r]),inv[n-r]);
return ans;
}
//Graph-dfs
// bool gone[MN];
// vector<int> adj[MN];
// void dfs(int loc){
// gone[loc]=true;
// for(auto x:adj[loc])if(!gone[x])dfs(x);
// }
//Sorting
bool sorta(const pair<int,int> &a,const pair<int,int> &b){return (a.second < b.second);}
bool sortd(const pair<int,int> &a,const pair<int,int> &b){return (a.second > b.second);}
//Bits
string decToBinary(int n){string s="";int i = 0;while (n > 0) {s =to_string(n % 2)+s;n = n / 2;i++;}return s;}
ll binaryToDecimal(string n){string num = n;ll dec_value = 0;int base = 1;int len = num.length();for(int i = len - 1; i >= 0; i--){if (num[i] == '1')dec_value += base;base = base * 2;}return dec_value;}
//Check
bool isPrime(ll n){if(n<=1)return false;if(n<=3)return true;if(n%2==0||n%3==0)return false;for(int i=5;i*i<=n;i=i+6)if(n%i==0||n%(i+2)==0)return false;return true;}
bool isPowerOfTwo(int n){if(n==0)return false;return (ceil(log2(n)) == floor(log2(n)));}
bool isPerfectSquare(ll x){if (x >= 0) {ll sr = sqrt(x);return (sr * sr == x);}return false;}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//code goes here
void solve()
{
ll n;
cin>>n;
string s;
cin>>s;
ll b=0,w=0;
for(auto &ch:s)
{
if(ch=='B') b++;
if(ch=='W') w++;
}
if(b&1 && w&1)
{
cout<<-1<<nline;
return;
}
vll res;
if(w&1)
{
ll i = 0;
while(i<n)
{
if(s[i]=='B')
{
if(s[i+1]=='W')
{
res.pb(i+1);
s[i+1] = 'B';
}
else
{
res.pb(i+1);
s[i+1]='W';
}
}
i++;
}
}
else
{
ll i = 0;
while(i<n)
{
if(s[i]=='W')
{
if(s[i+1]=='B')
{
res.pb(i+1);
s[i+1]='W';
}
else
{
res.pb(i+1);
s[i+1]='B';
}
}
i++;
}
}
cout<<res.size()<<nline;
cout<<res<<nline;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// ll t;
// cin>>t;
// while(t--)
solve();
return 0;
}
1472B - Fair Division | 1281C - Cut and Paste |
141A - Amusing Joke | 112A - Petya and Strings |
677A - Vanya and Fence | 1621A - Stable Arrangement of Rooks |
472A - Design Tutorial Learn from Math | 1368A - C+= |
450A - Jzzhu and Children | 546A - Soldier and Bananas |
32B - Borze | 1651B - Prove Him Wrong |
381A - Sereja and Dima | 41A - Translation |
1559A - Mocha and Math | 832A - Sasha and Sticks |
292B - Network Topology | 1339A - Filling Diamonds |
910A - The Way to Home | 617A - Elephant |
48A - Rock-paper-scissors | 294A - Shaass and Oskols |
1213A - Chips Moving | 490A - Team Olympiad |
233A - Perfect Permutation | 1360A - Minimal Square |
467A - George and Accommodation | 893C - Rumor |
227B - Effective Approach | 1534B - Histogram Ugliness |