//算法思路:先构建库,然而切分,再次构建Map,最后读取。


//substr(0,2) 取出子串  而且是双闭区间!!
//fgets(line,200,stdin) 读入了 \n 换行符
//fgets后面用   line1.pop_back() 去掉最后的\n
/*
1.输入 int n,后面读字符串,赶紧用 getchar();  读取\n
2. 字符串比较 == 用“ ”    重要:如果是line[0]则比较的 是 ' '   字符串!!!
3.这个代码 需要部分,部分调试

*/
#include<map>
#include<string>
#include<cstdio>
using namespace std;

int main() {

    map<string,string>dict;                 //魔咒---功能

    while(true){                            //库
        char magic[200];
        fgets(magic, 200, stdin);
        string cmagic= magic;
        cmagic.pop_back();
        
        if(cmagic=="@END@"){
           break;
        }
        else {
            string cmagic2 = cmagic.substr(0,cmagic.find(']')+1);     //魔咒
            string cmagic3 = cmagic.substr(cmagic.find(']' )+ 2);        //功能
            
            dict[cmagic2]=cmagic3;
            dict[cmagic3]=cmagic2;
        }
    }

    int n;
    scanf("%d",&n);
    getchar();
    for(int i = 0 ;i<n;i++){

        char line[200];
        fgets(line,200,stdin);
        string line1 = line;
        line1.pop_back();

        if(dict.find(line1) != dict.end()){ //存在某个功能或者咒语: dict是map,magic2,3
            if(line[0] == '[' ){                                //咒语!
                printf("%s\n",dict[line1].c_str());     
            }
            else{
                printf("%s\n",dict[line1].substr(1,dict[line1].find(']')-1).c_str());
            }
        }
        else{printf("what?\n");}
    }

}