#include <bits/stdc++.h>
using namespace std;
int n,m,p,q,x,y,wom,man;
int fa[10010],fam[10010];
int find(int x){
return x==fa[x] ? x : (fa[x] = find(fa[x]));
}
int findm(int x){
return x==fam[x] ? x : (fam[x] = findm(fam[x]));
}
void un(int x,int y){
fa[find(x)]=find(y);
}
void unm(int x,int y){
fam[findm(x)]=findm(y);
}
int main( ){
cin>>n>>m>>p>>q;
for(int i=1;i<=n;i++){
fa[i]=i;
}
for(int i=1;i<=m;i++){
fam[i]=i;
}
for(int i=1;i<=p;i++){
cin>>x>>y;
un(x,y);
}
for(int i=1;i<=q;i++){
cin>>x>>y;
x=-x;
y=-y;
unm(x,y);
}
for(int i=1;i<=n;i++){
if(fa[i]==find(1)) man++;
}
for(int i=1;i<=m;i++){
if(fam[i]==findm(1)) wom++;
}
cout<<min(man,wom);
return 0;
}