/*
很明顯的深搜的題目,而且很用到了棧的知識,不錯的題目,
感覺還不是很懂,有點瓶緊的感覺,應該是對棧不是很熟悉的緣故吧,
感覺好像做過的dfs的題目好像都有特定的格式一樣的,
好好加油
*/
#include<iostream>
#include<stack>
using namespace std;
char a[1000];
char b[1000];
bool hash[2000];
int lena, lenb;
stack<char> s;
void dfs(int si, int sj, int sk)
{
int i;
if(sj == lenb)
{
for(i = 0; i < sk; i++)
/* @ PE
if(i != sk - 1)
{
if(hash[i])
cout<<"i"<<" ";
else
cout<<"o"<<" ";
}
*/
//else
//{
if(hash[i])
cout<<"i"<<" ";
else
cout<<"o"<<" ";
//}
cout<<endl;
return ;
}
if(si < lena)
{
hash[sk] = true;
s.push(a[si]);
dfs(si + 1, sj, sk + 1);
s.pop();
}
//if(sj < lenb)
if(!s.empty() && b[sj] == s.top())
{
//if(b[sj] == s.top())
//{
char c = s.top();
s.pop();
hash[sk] = false;
dfs(si, sj + 1, sk + 1);
s.push(c);
//}
}
return;
}
int main()
{
while(cin>>a>>b)
{
lena = strlen(a);
lenb = strlen(b);
if(lena != lenb)
{
cout<<"["<<endl;
cout<<"]"<<endl;
}
else
{
cout<<"["<<endl;
dfs(0, 0 , 0);
cout<<"]"<<endl;
}
}
}