//土尔逊Torson 编写于2023/4/21
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <stdlib.h>
using namespace std;
const int MAXN = 1000;
string sample[MAXN];
const int sub1 = 'a' - 'A', sub2 = 'A' - 'a';
bool findBrackets(char c, string t, int left, int right) {
for (int i = left; i <= right; i++) {
if (c == t[i] || c == t[i] + sub1 || c == t[i] + sub2) return true;
}
return false;
}
int comp0471(string target, string sample) {
int i = 0, j = 0, k = 0;
while (k < sample.size() && k + i < sample.size() && j < target.size()) {
if (target[j] == '[') {
int left = j, right = j + 1;
for (right; target[right] != ']'; right++);
bool flag = findBrackets(sample[k + i], target, left, right);
if (flag) {
i++; j = right + 1;
if (j == target.size())return k;
}
else {
k++; i = 0; j = 0;
}
}
else {
if (sample[k + i] == target[j] || sample[k + i] == target[j] + sub1 || sample[k + i] == target[j] + sub2)
{
i++; j++;
if (j == target.size())return k;
}
else {
k++; i = 0; j = 0;
}
}
}
return -1;
}
int main() {
int n;
while (cin >> n) {
for (int i = 0; i < n; ++i)
cin >> sample[i];
string target;
cin >> target;
for (int i = 0; i < n; ++i) {
if (comp0471(target, sample[i]) != -1) printf("%d %s\n", i + 1, sample[i].c_str());
}
}
system("pause");
return EXIT_SUCCESS;
}
// 64 位输出请用 printf("%lld")