rt
#include<iostream>
using namespace std;
int fa1[10010],fa2[10010],n,m,p,q,x,y,cnt1,cnt2;
int find1(int x)
{
return x == fa1[x]?x:fa1[x] = find1(fa1[x]);
}
int find2(int x)
{
return x == fa2[x]?x:fa2[x] = find2(fa2[x]);
}
int main()
{
cin>>n>>m>>p>>q;
for(int i = 1;i <= n;i++)
{
fa1[i] = i;
}
for(int i = 1;i <= m;i++)
{
fa2[i] = i;
}
for(int i = 1;i <= p;i++)
{
cin>>x>>y;
fa1[find1(x)] = y;
}
for(int i = 1;i <= q;i++)
{
cin>>x>>y;
x = -x;
y = -y;
fa2[find2(x)] = y;
}
int f11 = find1(1),f21 = find2(1);
for(int i = 1;i <= n;i++)
{
//cout<<find1(i)<<" ";
if(find1(i) == f11)
{
cnt1++;
}
}
for(int i = 1;i <= m;i++)
{
if(find2(i) == f21)
{
cnt2++;
}
}
cout<<min(cnt1,cnt2);
}