#include<iostream>
#include<bitset>
#include<set>
#include<algorithm>
using namespace std;
int T,n,l;
long long ou[150],de[150];
int count1(long long num)
{
int ans=0;
while(num!=0)
{
if(num&1)ans++;
num>>=1;
}
return ans;
}
bool check(long long data)
{
long long ouc[150],dec[150];
for(int i=0;i<n;i++)
{
ouc[i]=ou[i]^data;
dec[i]=de[i];
}
sort(ouc,ouc+n);
sort(dec,dec+n);
for(int i=0;i<n;i++)
if(ouc[i]!=dec[i])
return 0;
return 1;
}
long long readBits()
{
string s;
cin>>s;
long long ans=0;
for(int i=0;i<s.size();i++)
ans<<=1,ans+=s[i]-'0';
return ans;
}
int main()
{
cin>>T;
for(int no=1;no<=T;no++)
{
cin>>n>>l;
set<long long> ta;
for(int i=0;i<n;i++)
ou[i]=readBits();
for(int i=0;i<n;i++)
de[i]=readBits();
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
ta.insert(ou[i]^de[j]);
set<long long>::iterator iter;
int best=100000;
for(iter=ta.begin();iter!=ta.end();iter++)
{
if(check(*iter))
best=min(count1(*iter),best);
}
if(best==100000)
printf("Case #%d: NOT POSSIBLE\n",no);
else
printf("Case #%d: %d\n",no,best);
}
}