#include <bits/stdc++.h>
using namespace std;
int fa[10005];
int find(int a)
{
if(a==fa[a])
return a;
else return fa[a]=find(fa[a]);
}
void join(int a,int b)
{
int f1=find(a),f2=find(b);
if(f1==f2)
return;
else fa[f1]=f2;
}
int main()
{
int n,m,p,q,x,y,s1=0,s2=0;
cin>>n>>m>>p>>q;
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=p;i++)
{
int x,y;
cin>>x>>y;
if(find(x)!=find(y))
join(x,y);
}
for(int i=1;i<=n;i++)
if(find(i)==find(1))
s1++;
for(int i=1;i<=m;i++)
fa[i]=i;
for(int i=1;i<=q;i++)
{
int x,y;
cin>>x>>y;
if(find(-x)!=find(-y))
join(-x,-y);
}
for(int i=1;i<=n;i++)
if(find(i)==find(1))
s2++;
cout<<min(s1,s2);
return 0;
}