#include <iostream>
#include <cstring>
#include <vector>
#include <cstdlib>
#include <cstdio>
using namespace std;
//英语 抄博友程序 看博友分析 dfs 需复习
int dis[4450];
vector<int> G[4450];
int jg;
void dfs(int x,int fa)
{
for(int i=0;i<G[x].size();i++)
{
int t=G[x][i];
if(t!=fa)
{
if(dis[t]!=-1)
{
jg=max(jg,dis[x]-dis[t]+1);
}else
{
dis[t]=dis[x]+1;
dfs(t,x);
}
}
}
//dis[x]=-1;//抄博友程序不加 ac 加这句 TLE 这道题特殊
}
int main()
{
int T;
//cin>>T;
scanf("%d",&T);
for(int o=0;o<T;o++)
{
int n,m;
//cin>>n>>m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
G[i].clear();
}
memset(dis,-1,sizeof(dis));
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);//抄博友程序
}
dis[1]=0;
jg=0;
dfs(1,0);
//cout<<jg<<endl;
printf("%d\n",jg);
}
return 0;
}