#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int minans;
void solve(int * box,bool * status,int number,int bits,int min){//p=led number=number
int p,q;
int * box1 = new int[number];
for(int ans=bits-1,k=0;ans>=0&&k<bits;--ans,++k){
for(int i=0;i<number;++i){
if(status[k]){
q=pow(2,ans);
p=box[i];
p&=~q;
box1[i]=p;
}
}
sort(box1,box1+number);
if(number==unique(box1,box1+number)-box1){//recursive
min--;
status[k]=0;
if(min<=minans&&min>=log2(number)){
minans=min;
}
solve(box1,status,number,bits,min);
}
}
delete [] box1 ;
}
int main(){
int test,number,temp,bits,min;
cin>>test;
while(test--){
cin>>bits>>number;
minans=min=bits;
if(!(number==1)){
int * box = new int[number];
bool * status = new bool[bits];
for(int i=0;i<number;++i){
box[i]=0;
for(int j=0;j<bits;++j){
cin>>temp;
status[j]=1;
box[i]+=temp*pow(2,bits-1-j);
}
}
solve(box,status,number,bits,min);
cout<<minans<<endl;
delete [] box ;
}
else{
for(int j=0;j<bits;++j)
cin>>temp;
cout<<"0"<<endl;
}
}
return 0;
}