#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
int n, m;
int index[100001];
char pocketmon[100001][21];
bool cmp(const int &first, const int &second)
{
string F = pocketmon[first];
string S = pocketmon[second];
int size = (F.size() < S.size()) ? F.size() : S.size();
for (int i = 0; i < size; i++) {
if (F[i] != S[i])
return F[i] < S[i];
}
return F.size() < S.size();
}
void bsearchName(string name)
{
int s = 1, e = n + 1;
int m;
string p;
while (s <= e) {
m = (s + e) / 2;
p = pocketmon[index[m]];
if (p.compare(name) < 0)
s = m + 1;
else e = m - 1;
}
printf("%d\n", index[e + 1]);
}
int main()
{
int i;
char name[21];
scanf("%d %d ", &n, &m);
for (i = 1; i <= n; i++) {
index[i] = i;
scanf("%s", pocketmon[i]);
}
sort(index + 1, index + n + 1, cmp);
for (i = 0; i < m; i++) {
scanf("%s", name);
string str = name;
if (name[0] >= '0' && name[0] <= '9') {
int num = atoi(name);
printf("%s\n", pocketmon[num]);
}
else bsearchName(str);
}
return 0;
}