#include<bits/stdc++.h>
using namespace std;
int n,p,a[310][310],c[310][310],b[310],deep[310][310],mx,mn=0x3f3f3f3f,cnt[310],x,y;
int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0' || ch>'9'){ if(ch=='-') f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
int put(int k,int p)
{
b[k]=p;
for(int i=1;i<=c[k][0];i++) put(c[k][i],p);
}
void dfs(int k,int Dep)
{
deep[Dep][++deep[Dep][0]]=k;mx=max(mx,Dep);
for(int i=1;i<=a[k][0];i++) if(!b[a[k][i]]) b[a[k][i]]=1,c[k][++c[k][0]]=a[k][i],dfs(a[k][i],Dep+1);
}
int Dfs(int k)
{
cnt[k]=1;
for(int i=1;i<=a[k][0];i++) if(!b[a[k][i]]) b[a[k][i]]=1,cnt[k]+=Dfs(a[k][i]);
return cnt[k];
}
void DFS(int k,int now)
{
if(k>mx) {mn=min(mn,now);return;}
int p=0;
for(int i=1;i<=deep[k][deep[k][0]];i++)
if(!b[deep[k][i]]) put(deep[k][i],1),DFS(k+1,now-cnt[deep[k][i]]),put(deep[k][i],0);
else p++;
if(p==deep[k][0]) {mn=min(mn,now);return;}
}
int main()
{
n=read();p=read();
for(int i=1;i<=p;i++)
{
x=read();y=read();
a[x][++a[x][0]]=y;
a[y][++a[y][0]]=x;
}
b[1]=1;
dfs(1,1);
memset(b,0,sizeof(b));b[1]=1;
Dfs(1);
memset(b,0,sizeof(b));b[1]=1;
DFS(2,n);
cout<<mn;
return 0;
}
RT