#include <bits/stdc++.h>
using namespace std;
int bac[101];
struct ds {
  int n;
  int *b;
  ds() {
    n = 0;
    b = new int[101];
  }
  ~ds() { delete[] b; }
  void push(int k) { b[n++] = k; }
  void xoa(int vt) { b[vt] = b[--n]; }
};
int n, m;
ds dothi[101];
void input() {
  cin >> n >> m;
  int u, v;
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    dothi[u].push(v);
    dothi[v].push(u);
    bac[u]++;
    bac[v]++;
  }
}
int main() {
  input();
  int bl = 1;
  ds tam;
  int count = 0;
  while (bl) {
    for (int i = 1; i <= n; i++) {
      if (dothi[i].n == 1) tam.push(i);
    }
    if (tam.n == 0)
      bl = 0;
    else {
      count++;
      for (int j = 0; j < tam.n; j++) {
        int u = dothi[tam.b[j]].b[0];
        int k;
        for (k = 0; k < dothi[u].n; k++) {
          if (dothi[u].b[k] == tam.b[j]) break;
        }
        dothi[u].xoa(k);
        dothi[tam.b[j]].xoa(0);
      }
    }
    tam.n = 0;
  }
  cout << count;
}
