1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<string>
5 #include<cmath>
6 #include<algorithm>
7 #include<queue>
8 #include<map>
9 using namespace std;
10 int n,m;
11 const int maxn=1e2+2;
12 string rule[maxn],value[maxn];
13 string s,t;
14 int lens,lent;
15 bool legal(){
16 for(int i=0;i<lent;i++){
17 if(t[i]>='a'&&t[i]<='z') continue;
18 if(t[i]>='A'&&t[i]<='Z') continue;
19 if(t[i]>='.'||t[i]=='-'&&t[i]=='_') continue;
20 return false;
21 }
22 return true;
23 }
24 bool check(){
25 lens=s.length();
26 int i=0,j=0;
27 while(i<lens&&j<lent){
28 if(s[i]==t[j]){
29 i++;
30 j++;
31 continue;
32 }
33 if(s[i]!='<') return false;
34 if(s[i+1]=='i'){
35 i+=5;
36 while(j<lent){
37 if(t[j]>='0'&&t[j]<='9') j++;
38 else if(t[j]=='/') break;
39 else return false;
40 }
41 }else if(s[i+1]=='s'){
42 i+=5;
43 while(j<lent){
44 if(t[j]!='/') j++;
45 else break;
46 }
47 }else if(s[i+1]=='p'){
48 return true;
49 }
50 }
51 if(i!=lens||j!=lent) return false;
52 return true;
53 }
54 void print(int id){
55 cout<<value[id];
56 int i=0,j=0;
57 while(i<lens&&j<lent){
58 if(s[i]==t[j]){
59 i++;
60 j++;
61 continue;
62 }
63 if(s[i+1]=='i'){
64 cout<<" ";
65 i+=5;
66 int flag=1;
67 while(j<lent){
68 if(t[j]=='/') break;
69 if(flag&&t[j]=='0'){
70 j++;
71 continue;
72 }
73 cout<<t[j];
74 flag=0;
75 j++;
76 }
77 }else if(s[i+1]=='s'){
78 i+=5;
79 cout<<" ";
80 while(j<lent){
81 if(t[j]=='/') break;
82 cout<<t[j];
83 j++;
84 }
85 }else if(s[i+1]=='p'){
86 cout<<" ";
87 while(j<lent){
88 cout<<t[j];
89 j++;
90 }
91 }
92 }
93 cout<<endl;
94 }
95 void work(){
96 lent=t.length();
97 if(!legal()){
98 printf("404\n");
99 return;
100 }
101 for(int i=1;i<=n;i++){
102 s=rule[i];
103 if(check()){
104 print(i);
105 return;
106 }
107 }
108 printf("404\n");
109 return;
110 }
111 int main(){
112 while(~scanf("%d%d",&n,&m)){
113 for(int i=1;i<=n;i++){
114 cin>>rule[i]>>value[i];
115 }
116 for(int i=1;i<=m;i++){
117 cin>>t;
118 work();
119 }
120 }
121 return 0;
122 }