// Catan
#include <iostream>
using namespace std;
int TC, M, N;
int x, y;
int matrix[26][26], visit[26][26];
int maxxx;
void backtrack(int x, int t){
for(int i=0; i<N; i++){
if(matrix[x][i]==1){
if(visit[i][x]==0){
visit[i][x]=visit[x][i]=1;
backtrack(i, t+1);
visit[i][x]=visit[x][i]=0;
}
}
}
if(t>maxxx) maxxx=t;
}
int main(){
//freopen("in.txt","r",stdin);
cin>> TC;
for(int t=1; t<=TC; t++){
int r=-1;
int l=-1;
cin>>N>>M;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
matrix[i][j]=0;
visit[i][j]=0;
}
}
for(int i=0; i<M; i++){
cin>>x>>y;
matrix[x][y]=matrix[y][x]=1;
}
maxxx=0;
int so=0;
while(so<N){
backtrack(so, 0);
so++;
}
cout<< maxxx<< endl;
}
return 0;
}