#include<cstdio>
#include<algorithm>
using namespace std;
int m,n,dad[30005],t,p,q,suma,sumb;
int find(int x){
if(x!=dad[x])
dad[x]=find(dad[x]);
else return x;
return dad[x];
}
void con(int x,int y){
x=find(x);
y=find(y);
if(x>y) dad[x]=y;
else dad[y]=x;
}
int cs(int x, int y){
return find(x)==find(y);
}
int main() {
scanf("%d %d %d %d",&n,&m,&p,&q);
for(int k=1;k<=n;++k) dad[k]=k;
for(int k=1;k<=m;++k) dad[n+k]=n+k;
for(int i=1;i<=p;++i){
int x,y;
scanf("%d %d",&x,&y);
con(x,y);
}
for(int i=1;i<=q;++i){
int x,y;
scanf("%d %d",&x,&y);
con(x*(-1)+n,y*(-1)+n);
}
for(int i=1;i<=n;++i){
if(dad[i]==1) ++suma;
}
for(int i=1;i<=m;++i){
if(dad[n+i]==n+1) ++sumb;
}
printf("%d",min(suma,sumb));
return 0;
}