#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int minans;
void solve(char ** box,int number ,int p){//p=led number=number
int ans,befor;//ans=check index befor=vector beforsize
string s;
for(ans=0;ans<p;++ans){
vector <string> check;
for(int i=0;i<number;++i){
s="";
for(int j=0;j<p;++j){
if(ans==j)continue;
else{
s+=box[i][j];
}
}
/*cout<<s<<endl;
cout<<s.size()<<endl;*/
check.push_back(s);
}
//cout<<endl;
befor=check.size();
sort(check.begin(),check.end());
int checksize=unique(check.begin(),check.end())-check.begin();
check.resize(checksize);
//printf("size%d checksize%d\n",befor,checksize);
if(befor==checksize&&check[0].size()<minans){//recursive
minans=check[0].size();
//cout<<minans<<endl;
char ** box2 = new char*[number];
for(int i=0;i<number;i++){
box2[i] = new char[check[0].size()];
}
for(int i=0;i<number;i++){
for(int j=0;j<check[0].size();j++){
box2[i][j]=check[i][j];
}
}
solve(box2,number,check[0].size());
for(int i=0;i<number;i++){
delete [] box2[i];
}
delete [] box2 ;
}
check.clear();
}
}
int main(){
int test,p,number;
cin>>test;
while(test--){
cin>>p>>number;
minans=p;
char ** box = new char*[number];
for(int i=0;i<number;i++){
box[i]=new char[p];
}
for(int i=0;i<number;i++){
for(int j=0;j<p;j++){
cin>>box[i][j];
}
}
solve(box,number,p);//p=led number=number
cout<<minans<<endl;
for(int i=0;i<number;i++){
delete [] box[i];
}
delete [] box ;
}
return 0;
}