/////////////////////////////////////////////////////////////////////////////////////////////////////
//这儿的题怎么都这么错综复杂
////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <cstdio>
#include <string>
// #include <algorithm>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n))
{
string pattern[n];
string text;
for(int i=0; i<n; ++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])
{
break;
}
}
while(k<pattern[i].size())
{
if(k<m||k>m)
{
if(pattern[i][k]==text[p])
{
++k;
++p;
}
else
{
break;
}
}
else if(k==m)
{
p=n+1;
++k;
}
}
if(p==text.size()){
cout<<i+1<<' '<<pattern[i]<<endl;
}
}
}
}