#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
const int MAXN = 100000 + 10;
int T;
/*
HDU 3363
关键:
①把串想象成一个环, 只要用一条过圆心的直线把环平分成两条链即可, 而由于它实际上是串, 因此已经被分过一次了, 因此可能还需要至少再分1次或2次
②只要平分了一种, 剩下那种肯定也是已经平分的
综上可知, 先找一个位置平分一种, 再找到这个位置关于圆心对称的另一个位置即可
*/
vector<int> cut1(char *str,int tmp){
int h = tmp/2, t = (T-tmp)/2; // 一个人需要的H和T的个数
int i,j,k;
for(i=j=k=0; i<T ; i++){
if( str[i]=='H' ){
if( j<h ){
j++;
}else{
break;
}
}else{
if( k<t ){
k++;
}else{
break;
}
}
}
vector<int> vec;
vec.push_back(i);
if( i!=T/2 ){
// 要切第二刀
vec.push_back(i+T/2);
}
return vec;
}
vector<int> cut2(char *str,int tmp){
int h = tmp/2, t = (T-tmp)/2; // 一个人需要的H和T的个数
int i,j,k;
for(i=T-1, j=k=0; i>=0 ; i--){
if( str[i]=='H' ){
if( j<h ){
j++;
}else{
break;
}
}else{
if( k<t ){
k++;
}else{
break;
}
}
}
i += 1;
vector<int> vec;
vec.push_back(i);
if( i!=T/2 ){
// 要切第二刀
vec.push_back(i-T/2);
}
sort(vec.begin(),vec.end());
return vec;
}
int main(){
while( (cin>>T) && T>0 ){
char str[MAXN];
int tmp = 0;
memset(str,0,sizeof(str));
scanf("%s",str);
T = strlen(str);
for(int i=0; i<T; i++ ){
if( str[i]=='H' ){
tmp++;
}
}
if( T%2==1 || tmp%2==1 || (T-tmp)%2==1 ){
cout << -1 << endl;
continue;
}
vector<int> vec1 = cut1(str,tmp);
vector<int> vec2 = cut2(str,tmp);
if( vec1.size()>vec2.size() ){
vec1 = vec2;
}else if( vec1.size()==vec2.size() && vec1[0]>vec2[0] ){
vec1 = vec2;
}else if( vec1.size()==vec2.size() && vec1[0]==vec2[0] ){
if( vec1.size()==2 && vec1[1]>vec2[1] ){
vec1 = vec2;
}
}
cout << vec1.size() << endl;
if( vec1.size()==1 ){
cout << vec1[0];
}else{
cout << vec1[0] << " " << vec1[1];
}
cout << endl;
}
return 0;
}