#include<bits/stdc++.h>
using namespace std;
#define ll long long
vector<int> par,to;
vector<vector<int>> g;
int root(int i){
if(par[i]==i){
return i;
}
int ri=root(par[i]);
return par[i]=ri;
}
void join(int i,int j){
int ri=root(i),rj=root(j);
if(ri==rj){
return;
}
par[rj]=ri;
}
vector<int> rm;
int D=0;
void dfs(int i,int c,int z){
if(rm[i]==1){
return;
}
rm[i]=1;
if(z==1){
if(to[i]==0)
D++;
to[i]=1;
}
if(i==c){
z=1;
}
for(auto x:g[i]){
if(rm[x]==0){
dfs(x,c,z);
}
}
if(i==c){
z=0;
}
rm[i]=0;
}
void solve(){
int n,m;
cin>>n>>m;
to.resize(n+1,0);
par.resize(n+1);
g.resize(n+1);
rm.resize(n+1,0);
for(int a=1;a<=n;a++){
par[a]=a;
}
for(int a=0;a<m;a++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
for(int a=1;a<=n;a++){
for(int b=1;b<=n;b++){
if(a!=b){
dfs(a,b,0);
fill(rm.begin(),rm.end(),0);
fill(to.begin(),to.end(),0);
}
}
}
cout<<D<<endl;
}
signed main(){
ios::sync_with_stdio();
cin.tie(0);
cout.tie(0);
ll t=1;
// cin>>t;
for(ll a=0;a<t;a++){
solve();
}
}