#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> adj;
long long int cnt{0};
vector<long long int> r;
vector<long long int> neww;
long long int n, e;
void checker() {
  neww.resize(n + 1);
  for (int i{1}; i < adj.size(); i++) {
    neww[i] = adj[i].size();
    if (adj[i].size() == 1) r.push_back(i);
  }
}
void proc() {
  cnt++;
  for (int i{0}; i < r.size(); i++) {
    int a = r[i];
    if (adj[a].size() == 1) {
      adj[a].clear();
      int b = adj[a][0];
      e--;
      for (int j{0}; j < adj[b].size(); j++) {
        if ((adj[b][j]) == a) {
          if (adj[b].size() == 1) {
            adj[b].clear();
          } else {
            adj[b].erase(adj[b].begin() + j);
          }
        }
        if (e <= 0) break;
      }
    }
  }
}
int main() {
  cin >> n >> e;
  adj.resize(n + 1);
  for (int i{0}; i < e; i++) {
    long long int x, y;
    cin >> x >> y;
    adj[x].push_back(y);
    adj[y].push_back(x);
  }
  checker();
  while (r.size() > 0 && e > 0) {
    proc();
    r.clear();
    checker();
  }
  cout << cnt;
  return 0;
}
