#include<bits/stdc++.h>
#define int long long
using namespace std;
map<string,int> yj;
pair<int,int> yq[100010];
pair<int,int> fk[100010];
int fzf[100010];
int find(int x){
if(x==fzf[x])return x;
return fzf[x]=find(fzf[x]);
}
signed main(){
int x,y,g,cnt=0,dyx=0;
cin>>x;
for(int i=1;i<=x;i++){
string a,b;
cin>>a>>b;
if(!yj[a]){
cnt++;
yj[a]=cnt;
}
if(!yj[b]){
cnt++;
yj[b]=cnt;
}
yq[i].first=yj[a];
yq[i].second=yj[b];
}
cin>>y;
for(int i=1;i<=y;i++){
string a,b;
cin>>a>>b;
if(!yj[a]){
cnt++;
yj[a]=cnt;
}
if(!yj[b]){
cnt++;
yj[b]=cnt;
}
fk[i].first=yj[a];
fk[i].second=yj[b];
}
for(int i=1;i<=cnt;i++){
fzf[i]=i;
}
cin>>g;
for(int i=1;i<=g;i++){
string a,b,c;
cin>>a>>b>>c;
int aa,bb,cc;
aa=yj[a];
bb=yj[b];
cc=yj[c];
fzf[aa]=find(fzf[cc]);
fzf[bb]=find(fzf[cc]);
}
for(int i=1;i<=x;i++){
int a,b;
a=yq[i].first;
b=yq[i].second;
if(find(a)!=find(b)){
dyx++;
}
}
for(int i=1;i<=y;i++){
int a,b;
a=fk[i].first;
b=fk[i].second;
if(find(a)==find(b)){
dyx++;
}
}
cout<<dyx;
return 0;
}