#include <iostream>
#include <stdlib.h>
#include <cstring>
int T;
char wildcard[101];
int N;
char str[51][101];
int cmp(const void* a, const void* b){
return strcmp((char*)a, (char*)(b));
}
bool check(char* ptr, char* pattern){
if(pattern[0] == 0 && ptr[0] == 0){
return true;
}
if(pattern[0] == 0 || ptr[0] == 0){
if(pattern[0] == '*'){
int i = 0;
while(pattern[i] == '*') i++;
if(pattern[i] == 0) return true;
}
return false;
}
if(pattern[0] == '?'){
if(check(ptr + 1, pattern + 1)){
return true;
}
}
else if(pattern[0] == '*'){
int i = 0;
for(; ptr[i]; i++){
if(check(ptr + i, pattern + 1)){
return true;
}
}
if(check(ptr +i, pattern + 1)) return true;
}
else{
if(ptr[0] == pattern[0]){
if(check(ptr + 1, pattern + 1)) return true;
}
}
return false;
}
int main(void) {
scanf("%d", &T);
scanf("%*c");
while(T--){
scanf("%s", wildcard);
scanf("%d", &N);
scanf("%*c");
for(int i = 0 ; i < N; i++){
scanf("%s", str[i]);
}
qsort(str, (unsigned int)N, sizeof(str[0]), cmp);
for(int i = 0 ; i < N; i++){
if(check(str[i], wildcard)){
printf("%s\n", str[i]);
}
}
}
return 0;
}