/////////////////////////////////////////////////////////////////////////////////////////////////////
//这儿的题怎么都这么错综复杂,你敢信,这题可以有很多[],多损啊
////////////////////////////////////////////////////////////////////////////////////////////////////
#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;
            }
        }
    }
}