#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int group[20004];
int num[20004];
vector<int> d;
int dp[2][20004];
int find(int x){
if(x!=group[x]) return find(group[x]);
return group[x];
}
void bing(int a,int b){
if(group[a]!=group[b]){
group[a]=find(group[a]);
group[b]=group[a];
}
return ;
}
void suan(int n){
for(int i=1;i<=n;i++) num[group[i]]++;
for(int i=1;i<=n;i++){
if(num[i]!=0) d.push_back(num[i]);
}
return ;
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++) group[i]=i;
for(int i=1;i<=k;i++){
int a,b;
cin>>a>>b;
bing(a,b);
}
suan(n);
dp[0][0]=m;
for(int i=1;i<=d.size();i++){
for(int j=1;j<=n;j++){
dp[i%2][j]=min(abs(dp[(i-1)%2][j-d[i-1]]),abs(dp[(i-1)%2][j]));
if(dp[i%2][j]==0){
cout<<m<<endl;
return 0;
}
}
}
cout<<m+dp[d.size()%2][n]<<endl;
return 0;
}