#include <stdio.h>
#include <memory.h>
#include <string.h>
int n, m;
char alpha[27][55];
int visit[27];
int dfs(char find, char input)
{
if (visit[input - 'a'] == 1)
return 0;
int result = 0;
visit[input - 'a'] = 1;
for (int i = 0; alpha[input - 'a'][i] != 0; i++)
{
if (find == alpha[input - 'a'][i])
{
return 1;
}
else
{
if (dfs(find, alpha[input - 'a'][i]))
{
return 1;
}
}
}
return result;
}
int main(void) {
int T;
setbuf(stdout, NULL);
scanf("%d\n", &T);
for (int test_case = 1; test_case <= T; test_case++)
{
memset(alpha, 0, sizeof(alpha));
memset(visit, 0, sizeof(visit));
scanf("%d %d\n", &n,&m);
for (int i = 0; i < n; i++ )
{
char input1, input2;
scanf("%c %c\n", &input1, &input2);
for (int j = 0;; j++)
{
if (alpha[input1-'a'][j] == 0)
{
alpha[input1-'a'][j] = input2;
break;
}
}
}
printf("#%d\n", test_case);
for (int i = 0; i < m; i++)
{
char str1[51], str2[51];
scanf("%s%s", str1,str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len1 != len2)
{
printf("no\n");
continue;
}
int check = 1;
for (int j = 0; j < len1; j++)
{
if (str1[j] != str2[j])
{
memset(visit, 0, sizeof(visit));
if (!dfs(str2[j], str1[j]))
{
check = 0;
break;
}
}
}
if (check)
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}