#include <bits/stdc++.h>
using namespace std;
int par[10005];
void init(int N){
for(int i = 1; i <= N; i++) par[i] = i;
}
int find(int x){
int r = x;
while(par[r] != r){
r = par[r];
}
par[x] = r;
return r;
}
void merge(int x,int y){
x = find(x);
y = find(y);
par[max(x,y)] = min(x,y);
}
signed main()
{
int n,m,p,q;cin >> n >> m >> p >> q;
int fria = 0;
init(n);
while(p--){
int x,y;cin >> x >> y;
merge(x,y);
}
for(int i = 1;i <= n;i++) if(find(i) == 1) fria ++;
int ans = 1e6;
ans = min(fria,ans);
int frib = 0;
init(m);
while(q--){
int x,y;cin >> x >> y;
x = abs(x);y = abs(y);
merge(x,y);
}
for(int i = 1;i <= n;i++) if(find(i) == 1) frib ++;
ans = min(ans,frib);
cout << ans;
return 0;
}