#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int fa[20001];
int a[20001],p[20001];
int f[40001];
int find(int x){
if(fa[x]==x){
return x;
}
return fa[x]=find(fa[x]);
}
void join(int x,int y){
if(find(x)==find(y)){
return ;
}
fa[find(y)]=find(x);
p[find(x)]+=p[find(y)];
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++){
fa[i]=i;
p[i]=1;
}
for(int i=1;i<=k;i++){
int x,y;
scanf("%d%d",&x,&y);
join(x,y);
}
int tot=0;
for(int i=1;i<=n;i++){
if(fa[i]==i){
tot++;
a[tot]=p[i];
}
}
for(int i=1;i<=tot;i++){
for(int j=2*m;j>=a[i];j--){
f[j]=max(f[j],f[j-a[i]]+a[i]);
}
}
int best=999999,ans=999999;
for(int i=1;i<=2*m;i++){
if(best==abs(f[i]-m)){
ans=min(f[i],ans);
}
else if(best>abs(f[i]-m)){
best=abs(f[i]-m);
ans=f[i];
}
}
if(ans==999999){
printf("0");
}
else{
printf("%d",ans);
}
}