// Authored by Ibrahimfostok...
// Next level : "Master"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 998244353;
// const ll mod = 1e9 + 7;
#define gcd __gcd
#define int ll
#define ld long double
#define lcm(a, b) (a * b / gcd(a, b))
#define ceil(x, y) (((x) + (y) - 1ll) / (y))
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
#define MOD(x) x = ((x % mod) + mod) % mod
const long double pi = 3.14159265358979323846;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rand(ll L, ll R)
{
return uniform_int_distribution<ll>(L, R)(rng);
}
//
void My_Solve(int TC)
{
// cout << setprecision(10) << fixed;
int n, m, ans = 0;
cin >> n >> m;
vector<string> a(n);
vector<vector<int>> pre(n + 1, vector<int>(m));
vector<vector<int>> suf(n + 2, vector<int>(m));
for (int i = 0; i < n; i++)
cin >> a[i];
for (int j = 0; j < m; j++)
{
vector<int> cnt(26);
for (int i = 0; i < n; i++)
cnt[a[i][j] - 'a']++, pre[i + 1][j] = max(cnt[a[i][j] - 'a'], pre[i][j]);
cnt.assign(26, 0);
for (int i = n - 1; i >= 0; i--)
{
cnt[a[i][j] - 'a']++;
suf[i + 1][j] = max(cnt[a[i][j] - 'a'], suf[i + 2][j]);
}
}
for (int i = 0; i <= n; i++)
ans = max(ans, accumulate(all(pre[i]), 0ll) + accumulate(all(suf[i + 1]), 0ll));
cout << ans << '\n';
}
int32_t main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
int t = 1;
cin >> t;
for (int i = 1; i <= t; i++)
My_Solve(i);
return 0;
}