#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,p,q,cnt,f[40001],num[40001];
map<int,int> mp;
int f1(int x){
if(f[x]!=x)f[x]=f1(f[x]);
return f[x];
}
void f2(int x,int y){
x=f1(x);
y=f1(y);
if(x!=y){
f[x]=y;
num[y]+=num[x];
}
}
signed main(){
cin>>n>>m>>p>>q;
for(int i=1;i<=40000;i++){
f[i]=i;
num[i]=1;
}
++cnt;
mp[1]=cnt;
++cnt;
mp[-1]=cnt;
for(int i=1;i<=p;i++){
int x,y;
cin>>x>>y;
int x1=mp[x];
int y1=mp[y];
if(x1==0){
cnt++;
mp[x]=cnt;
x1=cnt;
}
if(y1==0){
cnt++;
mp[y]=cnt;
y1=cnt;
}
f2(x1,y1);
}
for(int i=1;i<=q;i++){
int x,y;
cin>>x>>y;
int x1=mp[x];
int y1=mp[y];
if(x1==0){
cnt++;
mp[x]=cnt;
x1=cnt;
}
if(y1==0){
cnt++;
mp[y]=cnt;
y1=cnt;
}
f2(x1, y1);
}
cout<<min(num[f1(mp[1])], num[f1(mp[-1])]);
return 0;
}