/////////////////////////////////////////////////////////////////////////////////////////////////////
//这儿的题怎么都这么错综复杂
////////////////////////////////////////////////////////////////////////////////////////////////////
#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;
            }
        }
    }
}