#include <iostream>
using namespace std;

class UF {
	int par[50], sz;
public:
	void init(int n) { for (int i = 0; i < n; i++) par[i] = i; sz = n; }
	int root(int x) { if (par[x] == x) return x; return par[x] = root(par[x]); }
	void marge(int x, int y) { x = root(x); y = root(y); if (x != y) { par[x] = y; sz--; } }
	int getSize() { return sz; }
};

int main() {
	int i, j;
	int n, m;
	int a[2500], b[2500];
	
	cin >> n >> m;
	for (i = 0; i < m; i++) { cin >> a[i] >> b[i]; a[i]--; b[i]--; }
	
	int ans = 0;
	for (i = 0; i < m; i++) {
		UF uf;
		uf.init(n);
		for (j = 0; j < m; j++) {
			if (i == j) continue;
			uf.marge(a[j], b[j]);
		}
		ans += (uf.getSize() >= 2);
	}
	cout << ans << endl;
	return 0;
}