#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int p[N],sz[N];
int find(int x)
{
if(p[x]!=x)
{
p[x]=find(p[x]);
}
return p[x];
}
int main()
{
int n,m,pp,q;
cin>>n>>m>>pp>>q;
for(int i=1;i<=n;i++)
{
p[i]=i;
sz[i]=1;
}
for(int i=1;i<=pp;i++)
{
int x,y;
cin>>x>>y;
int dx=find(x),dy=find(y);
if(dx!=dy)
{
p[dx]=dy;
sz[dy]+=sz[dx];
}
}
for(int i=n+1;i<=n+1+m;i++)
{
p[i]=i;
sz[i]=1;
}
for(int i=1;i<=q;i++)
{
int x,y;
cin>>x>>y;
int dx=find(-1*x+n),dy=find(-1*y+n);
if(dx!=dy)
{
p[dx]=dy;
sz[dy]+=sz[dx];
}
}
int a=find(1),b=find(n+1);
cout<<min(sz[a],sz[b])<<endl;
return 0;
}