#include <iostream>
using namespace std;
int f[200001];
int find(int x){
if(f[x]!=x)f[x]=find(f[x]);
return f[x];
}
void mgs(int x,int y){
int a=find(x),b=find(y);
if(a!=b) f[b]=a;
}
int main(){
int n,m,p,q;
cin>>n>>m>>p>>q;;;
for(int i=0;i<=n+m;i++){
f[i]=i;
}
for(int i=1;i<=p;i++){
int a,b;
cin>>a>>b;
mgs(a+m,b+m);
}
for(int i=1;i<=q;i++){
int a,b;
cin>>a>>b;
mgs(m+a,m+b);
}
int c=0,d=0;
for(int i=0;i<=n+m;i++){
if(find(i)==m+1)c++;
if(find(i)==m-1){
d++;
}
}
cout<<min(c,d);
}