/////////////////////////////////////////////////////////////////////////////////////////////////////
//这儿的题怎么都这么错综复杂,你敢信,这题可以有很多[],多损啊
////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <cstdio>
#include <string>
// #include <algorithm>
using namespace std;
int main()
{
int x;
while(cin>>x)
{
string pattern[x];
string text;
for(int i=0; i<x; ++i)
{
cin>>pattern[i];
}
cin>>text;
string str;
int j=0;
int q=0;
int m;//[下标
int n;//]下标
while(j<text.size())
{
if(text[j]=='[')
{
m=j;
j++;
while(text[j]!=']') //出来的时候,j就是】的下标
{
str[q]=text[j];
++q;//q是方括号里面的数量
++j;
}
n=j;
break;
}
++j;
}
for(int i=0; i<n; ++i)
{
int k = 0;
int p = 0;
for(int y=0; y<str.size(); ++y)
{
if((pattern[i][m]-str[y]!=0)&&(pattern[i][m]-str[y]!=32)&&(pattern[i][m]-str[y]!=-32))
{
break;
}
}
while(k<pattern[i].size())
{
if(k<m||k>m)
{
if((pattern[i][k]-text[p]==0)||(pattern[i][k]-text[p]==32)||(pattern[i][k]-text[p]==-32))
{
++k;
++p;
}
else
{
break;
}
}
else if(k==m)
{
p=n+1;
++k;
}
}
if(p==text.size()){
cout<<i+1<<' '<<pattern[i]<<endl;
}
}
}
}