RT
#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 21
int T,n,m;
bool a[maxn][maxn],road[maxn][maxn];
void turnz()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
road[i][j]=false;
}
void change(long long shu,int now)
{
int tim=m;
while(tim)
{
int end=shu%10;
if(end) a[now][tim--]=true;
else a[now][tim--]=false;
shu/=10;
}
}
bool check(int idl,int idr)
{
bool flagl=false,flagr=false;
for(int i=1;i<=m;i++)
{
if(a[idl][i] && !a[idr][i]) flagl=true;
if(!a[idl][i] && a[idr][i]) flagr=true;
}
if(flagl==flagr) return false;
return true;
}
int main()
{
cin>>T;
while(T--)
{
int ans=0;
cin>>n>>m;
turnz();
for(int i=1;i<=n;i++)
{
long long shu;
cin>>shu;
change(shu,i);
}
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(check(i,j)) road[i][j]=true;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(road[i][j] && road[j][k] && road[i][k]) road[i][k]=false;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(road[i][j]) ans++;
cout<<ans<<endl;
}
return 0;
}