BFS
#include <iostream>
#include <string>
#include <cstring>
#include <queue>
#include <cmath>
#include <vector>
using namespace std;
struct status{
int k;
vector<int> route;
};
bool check[520];//判断当前情况是否走过 2^9
int main()
{
int test;
cin >> test;
while(test--){
string s;
cin >> s;
memset(check,0,sizeof(check));
int len=s.length();
int num=0;
for(int i=0; i < len; ++i){
if(s[i]=='b')num+=pow(2,len-1-i);
}
if(num==0) {
cout << "11" << endl;
continue;
}
status t;
t.k=num;
queue<status> q;
q.push(t);
check[t.k]=true;
while(true){
status tmp=q.front();
q.pop();
if(tmp.k==0){
for(vector<int>::size_type i=0;i < tmp.route.size();i++){
cout << tmp.route[i]+1;
}
cout << endl;
break;
}//满足结果
for(int i=0; i < 9; ++i){
status ttmp;
ttmp.k=tmp.k;
ttmp.route=tmp.route;
if(i==0) ttmp.k^=432;
else if(i==1) ttmp.k^=504;
else if(i==2) ttmp.k^=216;
else if(i==3) ttmp.k^=438;
else if(i==4) ttmp.k^=511;
else if(i==5) ttmp.k^=219;
else if(i==6) ttmp.k^=54;
else if(i==7) ttmp.k^=63;
else if(i==8) ttmp.k^=27;
//用异或运算进行翻转
if(check[ttmp.k]) continue;
check[ttmp.k]=true;
ttmp.route.push_back(i);
q.push(ttmp);
}
}
}
}