#include<iostream>
#include<queue>
#include<string.h>
#define N 301
using namespace std;
int n,p,f[N]={},m[N]={};bool a[N][N]={},v[N]={};
struct tree{int t,x,r;}tmp;queue<tree>q;
int dfs(int x){
v[x]=f[x]=1;
for(int i=1;i<=n;i++)
if(a[x][i]&&!v[i])f[x]+=dfs(i);
return f[x];
}
int main(){
int i,j,t=0;
cin>>n>>p;
while(p--){
cin>>i>>j;
a[i][j]=a[j][i]=1;
}
dfs(1);
memset(v,0,sizeof(v));
tmp={0,1,1},v[1]=1;q.push(tmp);
while(!q.empty()){
m[0]=0;
while(!q.empty()&&q.front().t==t){
tmp=q.front();q.pop();
if(tmp.r==m[t-1])continue;
if(f[tmp.x]>f[m[t]])m[t]=tmp.x;
for(i=1;i<=n;i++)
if(a[tmp.x][i]&&!v[i]){
q.push({tmp.t+1,i,tmp.x});
v[i]=1;
}
}
t++;
}
for(i=1;m[i];i++)n-=f[m[i]];
cout<<n;
}