#include<bits/stdc++.h>
using namespace std;
void is_palimdrom(string str,int & count)
{
int l = 0;
int h =str.size()- 1;
while (h > l)
{
if (str[l++] != str[h--])
{
return;
}
}
count++;
}
void DFS_util(vector<vector<char>>arr,int x,int y,string str,int & count)
{
cout<<str<<endl;
int m=arr.size();
int n=arr[0].size();
if(x==m-1 && y==n-1)
{
is_palimdrom(str,count);
}
else if( x<m && y<n)
{
DFS_util(arr, x+1, y, str+arr[x][y], count);
DFS_util(arr, x, y+1, str+arr[x][y], count);
}
return ;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int n,m;
cin>>n,m;
vector<vector<char>>arr(n,(vector<char>(m,0)));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>arr[i][j];
}
}
int count=0;
//string str="";
DFS_util(arr,0,0,"a",count);
cout<<count<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgaXNfcGFsaW1kcm9tKHN0cmluZyBzdHIsaW50ICYgY291bnQpCnsKICAgaW50IGwgPSAwOyAKICAgIGludCBoID1zdHIuc2l6ZSgpLSAxOyAKICAgIHdoaWxlIChoID4gbCkgCiAgICB7IAogICAgICAgIGlmIChzdHJbbCsrXSAhPSBzdHJbaC0tXSkgCiAgICAgICAgeyAKICAgICAgICAgICAgcmV0dXJuOyAKICAgICAgICB9IAogICAgfSAKICAgIGNvdW50Kys7Cn0KCnZvaWQgREZTX3V0aWwodmVjdG9yPHZlY3RvcjxjaGFyPj5hcnIsaW50IHgsaW50IHksc3RyaW5nIHN0cixpbnQgJiBjb3VudCkKewogICAgY291dDw8c3RyPDxlbmRsOwogICAgaW50IG09YXJyLnNpemUoKTsKICAgIGludCBuPWFyclswXS5zaXplKCk7CiAgICBpZih4PT1tLTEgJiYgeT09bi0xKQogICAgewogICAgICAgIGlzX3BhbGltZHJvbShzdHIsY291bnQpOwogICAgICAgIAogICAgfQogICAgZWxzZSBpZiggeDxtICYmIHk8bikKICAgIHsKICAgICAgICBERlNfdXRpbChhcnIsIHgrMSwgeSwgc3RyK2Fyclt4XVt5XSwgY291bnQpOwogICAgICAgIERGU191dGlsKGFyciwgeCwgeSsxLCBzdHIrYXJyW3hdW3ldLCBjb3VudCk7CiAgICB9CiAgICByZXR1cm4gOwp9CmludCBtYWluKCkKewogICAgaW50IFQ7CiAgICBjaW4+PlQ7CiAgICB3aGlsZShULS0pCiAgICB7CiAgICAgICAgaW50IG4sbTsKICAgICAgICBjaW4+Pm4sbTsKICAgICAgICB2ZWN0b3I8dmVjdG9yPGNoYXI+PmFycihuLCh2ZWN0b3I8Y2hhcj4obSwwKSkpOwogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPG07aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaW4+PmFycltpXVtqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgIAogICAgIGludCBjb3VudD0wOwogICAgIC8vc3RyaW5nIHN0cj0iIjsKICAgIERGU191dGlsKGFyciwwLDAsImEiLGNvdW50KTsKICAgICBjb3V0PDxjb3VudDw8ZW5kbDsKICAgIH0KCQoJcmV0dXJuIDA7Cn0=