#include<stdio.h>
#include<iostream>
#include<math.h>
#define NM 10005
#include<algorithm>
using namespace std;
int a[NM],N,M,P,Q,b[NM];
void join(int num,int y,int c[NM],int x)
{
int i;
for(i=1;i<=num;i++)
{
if(c[i]==y)
c[i]=x;
}
}
int main()
{
scanf("%d%d%d%d",&N,&M,&P,&Q);
int i,x,y,num1=0,num2=0;
for(i=1;i<=P;i++)
a[i]=i;
for(i=1;i<=Q;i++)
b[i]=i;
for(i=1;i<=P;i++)
{
scanf("%d%d",&x,&y);
if(a[x]!=a[y])
join(P,a[y],a,a[x]);
}
for(i=1;i<=Q;i++)
{
scanf("%d%d",&x,&y);
int fx=(-1)*x,fy=(-1)*y;
if(b[fx]!=b[fy])
join(Q,b[fy],b,b[fx]);
}
for(i=1;i<=P;i++)
{
if(a[i]==a[1])
num1++;
}
for(i=1;i<=Q;i++)
{
if(b[i]==b[1])
num2++;
}
if(P==0||Q==0)
cout<<1;
else
cout<<min(num1,num2);
}