import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
private static List<String> ans = new ArrayList<String>();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, m;
while (in.hasNext()) {
n = in.nextInt();
m = in.nextInt();
String[] p = new String[n];
String[] r = new String[n];
String s1, s2;
in.nextLine();
for (int i = 0; i < n; i++) {
String[] split = in.nextLine().split(" ");
p[i] = split[0];
r[i] = split[1];
}
for (int i = 0; i < m; i++) {
boolean flag = true; //flag == false 表示找到
s1 = in.next();
int j;
for (j = 0; j < n; j++) {
flag = !check(s1, p[j]);
if (!flag) { //找到
break;
}
}
if (flag) {
System.out.println(404);
} else {
System.out.print(r[j]);
for (int k = 0; k < ans.size(); k++) {
if (check(ans.get(k)) == "<int>") {
System.out.print(" " + toi(ans.get(k)));
} else {
System.out.print(" " + ans.get(k));
}
}
System.out.println();
}
}
}
}
private static int toi(String str) {
int ans = 0;
int len = str.length();
for (int i = 0; i < len; i++) {
ans = ans*10 + str.charAt(i) - '0';
}
return ans;
}
private static boolean check(String strp, String strq) {
List<String> cnt1 = new ArrayList<>();
List<String> cnt2 = new ArrayList<>();
solve(cnt1, strq);
solve(cnt2, strp);
int tot = 1;
if (cnt1.size() > cnt2.size()) {
return false;
}
if (cnt1.size() >= 1) {
if (cnt1.size() < cnt2.size() && !cnt1.get(cnt1.size()-1).equals("<path>")) {
return false;
}
}
if (cnt1.size() == 0 && cnt2.size() != 0) {
return false;
}
ans.clear();
for (int i = 0; i < cnt1.size(); i++) {
if (cnt1.get(i).equals(cnt2.get(i))) {
tot += (cnt2.get(i).length() + 1);
continue;
} else if (cnt1.get(i).equals("<path>")) {
ans.add(strp.substring(tot, strp.length()));
return true;
} else if (cnt1.get(i).equals(check(cnt2.get(i)))) {
ans.add(cnt2.get(i));
tot += (cnt2.get(i).length()+1);
} else {
return false;
}
}
if (strp.charAt(strp.length()-1) == '/' && strq.charAt(strq.length()-1) != '/') {
return false;
}
if (strp.charAt(strp.length()-1) != '/' && strq.charAt(strq.length()-1) == '/') {
return false;
}
return true;
}
private static void solve(List<String> V, String str) {
V.clear();
int len = str.length();
String cnt = "";
for (int i = 1; i < len; i++) {
if (str.charAt(i) == '/') {
V.add(cnt);
cnt = "";
} else {
cnt += str.charAt(i);
}
}
if (cnt != "") {
V.add(cnt);
}
}
private static String check(String str) {
int len = str.length();
int flag = 0;
for (int i = 0; i < len; i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '9') {
flag = 1;
break;
}
}
if (flag == 0) {
return "<int>";
} else {
return "<str>";
}
}
}