#include <bits/stdc++.h>
using namespace std;
int const N = 500010;
vector<int> G[N];
vector<int> H;
void dfs(int cur, int height, int parent) {
  if (G[cur].size() == 1) {
    H.push_back(height);
  }
  for (int i = 0; i < G[cur].size(); i++) {
    if (parent == G[cur][i]) {
      continue;
    }
    dfs(G[cur][i], height + 1, cur);
  }
}
int main() {
  ios::sync_with_stdio(false);
  int n, ans = 0;
  cin >> n;
  for (int i = 1; i < n; i++) {
    int u, v;
    cin >> u >> v;
    G[u].push_back(v);
    G[v].push_back(u);
  }
  for (int i = 0; i < G[1].size(); i++) {
    H.clear();
    dfs(G[1][i], 1, 1);
    sort(H.begin(), H.end());
    int k = H[0];
    for (int j = 1; j < H.size(); j++) {
      k = max(H[j], k + 1);
    }
    ans = max(ans, k);
  }
  cout << ans;
  return 0;
}
