#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int fa[20000], fb[20000];//把男女分成两个并查集,fa是男,fb是女;
int finda(int x) {
if (fa[x] == x)
return x;
return fa[x] = finda(fa[x]);//对男的进行查照
}
int findb(int x) {
if (fb[x] == x)
return x;
return fb[x] = findb(fb[x]);//对女的进行查找
}
int main() {
int n, m, p, q;
cin >> n >> m >> p >> q;
int p1 = p, q1 = q;//后面的while会改变p,q的值,所以先存起来;
for (int i = 1; i <= p; i++)
fa[i] = i;
for (int i = 1; i <= q; i++)
fb[i] = i;
int x, y, ans1 = 0, ans2 = 0; //分别设置小明和小红的朋友数,ans1和ans2;
while (p--) {
cin >> x >> y;
if (finda(x) != finda(y))
fa[finda(y)] = finda(x);//男的并查集;
}
for (int i = 1; i <= p1; i++) {
if (finda(fa[i]) == finda(fa[1]))
ans1++;//计算小明朋友数量;
}
while (q--) {
cin >> x >> y;
x = fabs(x), y = fabs(y);
if (findb(x) != findb(y))
fb[findb(y)] = findb(x);//女的并查集
}
for (int i = 1; i <= q1; i++) {
if (findb(fb[i]) == findb(fb[1]))
ans2++;//计算女的数量
}
cout << min(ans1, ans2);//输出两者小的那个;
return 0;
}