#include <bits/stdc++.h>

using namespace std;
vector<int> a[60];
int dfn[60];
int low[60];
int sp[60];
int vis[60];
int cnt=1;
int dig=0;
void tarjan(int w,int u){
    vis[u]=1;
    low[u]=dfn[u]=(cnt++);
    for(int i=0;i<a[u].size();i++){
        int v = a[u][i];
        if(v==w) continue;
        if(vis[v]!=1) tarjan(u,v);
        if(vis[v]==1) low[u]=min(low[u],low[v]);
    }
    if(low[u]==dfn[u]){
        dig++;
    }
}
void init(){
    memset(dfn,0,sizeof dfn);
    memset(low,0,sizeof low);
    memset(vis,0,sizeof vis);
    memset(sp,0,sizeof sp);
}
int main()
{
    int n,m;
    cin>>n>>m;
    init();
    for(int i=0;i<m;i++){
        int k1,k2;
        cin>>k1>>k2;
        a[k1].push_back(k2);
        a[k2].push_back(k1);
    }
    tarjan(1,1);
    cout<<dig-1<<endl;
    return 0;
}
