/*
很明显的深搜的题目,而且很用到了栈的知识,不错的题目,
感觉还不是很懂,有点瓶紧的感觉,应该是对栈不是很熟悉的缘故吧,
感觉好像做过的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;
}
}
}