#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Adjmatrix[25][25];
int visited[25];
int x,y;
int ok=0;
int max=1;
void DFS(int location,int count)
{
if(count==x)
{
if(location==x)ok=1;
return ;
}
if(max<count)max=count;
for(int i=1;i<=x;i++)
{
if(!visited[i]&&Adjmatrix[location][i])
{
visited[i]=1;
DFS(i,count+1);
if(ok==1)return ;
visited[i]=0;
}
}
}
int main(){
while((scanf("%d",&x))!=EOF)
{
memset( visited,0,sizeof( visited));
memset( Adjmatrix,0,sizeof(Adjmatrix));
y=x-1;
for(int j=1;j<=y;j++)
{
int a,b;
scanf("%d%d",&a,&b);
Adjmatrix[a][b]=Adjmatrix[b][a]=1;
}
visited[1]=1;
DFS(1,1);
x=0;
y=0;
ok=0;
printf("%d\n",max);
max=1;
}
return 0;
}
#include <stdlib.h>
#include <string.h>
int Adjmatrix[25][25];
int visited[25];
int x,y;
int ok=0;
int max=1;
void DFS(int location,int count)
{
if(count==x)
{
if(location==x)ok=1;
return ;
}
if(max<count)max=count;
for(int i=1;i<=x;i++)
{
if(!visited[i]&&Adjmatrix[location][i])
{
visited[i]=1;
DFS(i,count+1);
if(ok==1)return ;
visited[i]=0;
}
}
}
int main(){
while((scanf("%d",&x))!=EOF)
{
memset( visited,0,sizeof( visited));
memset( Adjmatrix,0,sizeof(Adjmatrix));
y=x-1;
for(int j=1;j<=y;j++)
{
int a,b;
scanf("%d%d",&a,&b);
Adjmatrix[a][b]=Adjmatrix[b][a]=1;
}
visited[1]=1;
DFS(1,1);
x=0;
y=0;
ok=0;
printf("%d\n",max);
max=1;
}
return 0;
}