#define _GLIBCXX_FILESYSTEM
#include<bits/stdc++.h>
using namespace std;
#define ll long long
void solve() {
int n,m;
cin >> n >> m;
string s[n];
for(int i = 0; i < n; i++){
cin >> s[i];
}
int prf[n][m][26], suf[n][m][26];
memset(prf,0,sizeof(prf));
memset(suf,0,sizeof(suf));
for(int i = 0; i < m; i++) {
prf[0][i][s[0][i] - 'a']++;
suf[n-1][i][s[n-1][i] - 'a']++;
}
for(int i = 1; i < n; i++) {
for(int j = 0; j < m; j++) {
for(int k = 0; k < 26; k++) {
prf[i][j][k] = prf[i-1][j][k];
}
prf[i][j][s[i][j] - 'a']++;
}
}
for(int i = n - 2; i >= 0; i--) {
for(int j = 0; j < m; j++) {
for(int k = 0; k < 26; k++) {
suf[i][j][k] = suf[i+1][j][k];
}
suf[i][j][s[i][j] - 'a']++;
}
}
// for(int i = 0; i < n; i++) {
// for(int j = 0; j < m; j++) {
// cout << prf[i][j][0] << ' ' << suf[i][j][0] << '\n';
// }
// }
int ans = 0;
for(int i = 0; i < n; i++) {
int now = 0;
for(int j = 0; j < m; j++) {
int mx = 0;
for(int k = 0; k < 26; k++) {
mx = max(mx,prf[i][j][k]);
}
now += mx;
}
if(i+1 < n) {
for(int j = 0; j < m; j++) {
int mx = 0;
for(int k = 0; k < 26; k++) {
mx = max(mx,suf[i+1][j][k]);
}
now += mx;
}
}
ans = max(ans, now);
}
cout << ans << '\n';
return;
}
int32_t main() {
ios_base::sync_with_stdio(false);cin.tie(NULL);
int tc = 1;
cin >> tc;
for(int kase = 1; kase <= tc; kase++) {
//cout << "Case " << kase << ": ";
solve();
}
return 0;
}