#include<iostream>
#include<string>
#include<map>
using namespace std;

string maps[252];
map<char,int> M;
int a[5];//记录每一个福娃在两行相同的位子出现的次数

int main()


{
int text;
cin>>text;
M['B'] = 0;//将福娃与编号绑定
M['J'] = 1;
M['H'] = 2;
M['Y'] = 3;
M['N'] = 4;
while(text--)

{
int n,m;
int i,j,k;
cin>>n>>m;
int ans = 0;
for(i = 1;i <= n ;i++)
cin>>maps[i];
for(i = 1;i <= n;i++)//从第i行
for(j = i+1; j <= n;j++)//到第j行

{
memset(a,0,sizeof(a));
for(k = 0;k < m;k++)//相同的k列是否是相同的福娃

{
if(maps[i][k] == maps[j][k])

{
ans = ans + a[M[maps[i][k]]];//记录总的个数,先加以前的个数
a[M[maps[i][k]]] ++;//再将自身加一,很巧妙
}
}

}
cout<<ans<<endl;
}
return 0;
}