#include<bits/stdc++.h>
using namespace std;
int n,m,p,q,G[100100],B[100100],sumG = 0,sumB = 0,a,b;
int f1(int k){
if(B[k]==k) return k;
else return B[k] = f1(B[k]);
}
void U1(int x,int y){
int u = f1(x);
int v = f1(y);
if(u==v) return;
if(u>v) B[u] = v;
else B[v] = u;
}
int f2(int k){
if(G[k]==k) return k;
else return G[k] = f2(G[k]);
}
void U2(int x,int y){
int u = f2(x);
int v = f2(y);
if(u==v) return;
if(u>v) G[u] = v;
else G[v] = u;
}
int main(){
cin>>n>>m>>p>>q;
for(int i = 0;i<=10010;i++){
B[i] = i;
}
for(int i = 1;i<=p;i++){
cin>>a>>b;
U1(a,b);
}
for(int i = 0;i<=10010;i++){
G[i] = i;
}
for(int i = 1;i<=q;i++){
cin>>a>>b;
U2(-a,-b);
}
for(int i = 1;i<=p;i++){
if(f1(B[i])==1) sumB++;
}
sumG=0;
for(int i = 1;i<=q;i++){
if(f2(G[i])==1) sumG++;
}
cout<<min(sumB,sumG);
return 0;
}