#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>#include <string.h>#include <algorithm>#define MAX 520using namespace std;char ch[MAX][30];int map[MAX][MAX];char str[MAX][30];char adp[30];int used[MAX],mat[MAX];int n,m,nn;int Augement(int x){int i;for(i=m+1; i<=m+nn; i++)if( !used[i] && map[x][i] ){used[i] = 1;if( !mat[i] || Augement(mat[i]) ){mat[i] = x;return 1;}}return 0;}int Hungary(){int i,sum = 0;memset(mat,0,sizeof(mat));for(i=1; i<=m; i++){memset(used,0,sizeof(used));if( Augement(i) )sum++;}return sum;}int main(){int ncases;int i,k,p,j;char a[30],b[30];scanf("%d",&ncases);while( ncases-- ){scanf("%d",&n);memset(map,0,sizeof(map));for(i=1; i<=n; i++)scanf("%s",ch[i]);nn = n;scanf("%d",&m);for(i=1; i<=m; i++){scanf("%s %s",str[i],adp);int flag = 0;for(k=1; k<=n; k++)if( strcmp(adp,ch[k]) == 0 ){flag = 1;map[i][k+m] = 1;break;}if( flag == 0 ){n++;memcpy(ch[n],adp,sizeof(adp));map[i][m+n] = 1;}}scanf("%d",&p);while( p-- ){scanf("%s %s",a,b);int tmpb = -1,tmpa = -1;for(i=1; i<=n; i++){if( tmpb != -1 && tmpa != -1 )break;if( strcmp(b,ch[i]) == 0 )tmpb = i;if( strcmp(a,ch[i]) == 0 )tmpa = i;}if( tmpb == -1 ){n++;memcpy(ch[n],b,sizeof(b));tmpb = n;}if( tmpa == -1 ){n++;memcpy(ch[n],a,sizeof(a));tmpa = n;}map[tmpa+m][tmpb+m] = 1;}for(i=1; i<=m+n; i++)for(k=1; k<=m+n; k++)for(j=1; j<=m+n; j++)if( map[k][i] && map[i][j] && !map[k][j] )map[k][j] = 1;int ans = Hungary();printf("%dn",m-ans);if( ncases )printf("n");}return 0;}


