#include <iostream>
#include <fstream>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <utility>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <cctype>
#include <assert.h>
#include <list>
#include <ext/hash_set>
#include <ext/hash_map>

using namespace __gnu_cxx;
using namespace std;

#define MP(a,b) make_pair(a,b)
#define i64 long long
#define pb push_back
#define For(i,a,b) for(typeof(a) i=(a);i<(b);i++)
#define Rev(i,a,b) for(typeof(a) i=(a);i>=(b);i--)
#define FOREACH(V,it) for(typeof(V.begin()) it=V.begin();it!=V.end();it++)
#define CLR(a,x) memset(a,x,sizeof(a))
#define ALL(x) x.begin(),x.end()

/**********************************************************************************/
int tim,ret;
vector<int> e[110];
int orig[110], used[110];
int dfs(int x, int par){
	//cout << x << ' ' << used[x] << endl;
	if (used[x]) return used[x];
	used[x]=++tim;
	orig[x]=used[x];
	For(i,0,e[x].size()){
		int y=e[x][i];
		if (y==par) continue;
		used[x]= min(used[x],dfs(y,x));
	}
	if (orig[x]==used[x]) ret++;
	return used[x];
}

int main(){
	FILE *f,*g; f=fopen("DATA5.txt","r"); g= fopen("OUT5.txt","w");
	int t=5;
	int x,y;
	while (t--){
		int n,m;
		fscanf(f,"%d%d",&n,&m);
		For(i,0,n) e[i].clear();
		For(i,0,m){
			fscanf(f,"%d%d",&x,&y);
			x--,y--;
			e[x].pb(y); e[y].pb(x);
		}
		ret=0;CLR(used,0); tim=0;
		dfs(0,-1);
		fprintf(g,"%d\n",ret-1);							
	}			
	fclose(f); fclose(g);
	return 0;
}
