#include<bits/stdc++.h>
using namespace std;
int t,n,m;char a[45][45];
bool col[1605];
void dfs(int x,int y,int col){
if(x<1||x>n||y<1||y>m||a[x][y]!='.')return;
a[x][y]=col;
dfs(x-1,y,col);
dfs(x+1,y,col);
dfs(x,y-1,col);
dfs(x,y+1,col);
}
bool check(int x1,int y1,int x2,int y2){
if(a[x1][y1]==a[x2][y2]||col[a[x1][y1]])return 1;
for(int i=0;i<=n+1;i++)
for(int j=0;j<=m+1;j++){
if(i-x2+x1>0&&i-x2+x1<=n&&j-y2+y1>0&&j-y2+y1<=m&&a[i][j]=='O'&&a[i-x2+x1][j-y2+y1]==a[x1][y1]){
return 1;
}
}
return 0;
}
int main(){
cin>>t;
while(t--){
cin>>n>>m;
memset(col,0,sizeof col);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)a[i][0]=a[i][m+1]='O';
for(int i=1;i<=m;i++)a[0][i]=a[n+1][i]='O';
int col=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]=='.')dfs(i,j,++col);
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(a[i][j]=='O')continue;
for(int k=1;k<=n;k++)
for(int l=1;l<=m;l++){
if((i==k&&j==l)||a[k][l]=='O')continue;
if(!check(i,j,k,l)){
goto bk;
}
}
ans++;::col[a[i][j]]=1;
bk:;
}
cout<<ans<<'\n';
}
return 0;
}