#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define MAX_N 105
int N;
vector<int> G[MAX_N];
bool visited[MAX_N];
int ans,cnt;

void rec(int pos){
  ans=max(ans,++cnt);
  visited[pos]=true;
  for(int i=0;i<(int)G[pos].size();i++){
    int w=G[pos][i];
    if(visited[w])continue;
    rec(w);
  }
  visited[pos]=false;
  cnt--;
}

void init(){
  for(int i=0;i<MAX_N;i++){
    G[i].clear();
  }
}

int main(){
  while(cin>>N&&N){
    init();
    for(int i=0;i<N;i++){
      int a,b;
      cin>>a>>b;
      G[a].push_back(b);
      G[b].push_back(a);
    }
    ans=0;
    for(int i=1;i<=100;i++){
      for(int j=1;j<=100;j++)visited[j]=false;
      cnt=0;
      rec(i);
    }
    cout<<ans<<endl;
  }
  return 0;
}