#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template <typename T> using o_set = tree<T, null_type, std::less<T>, rb_tree_tag, tree_order_statistics_node_update>;
// #define int long long
#define endl '\n'
#define F first
#define S second
#define pii pair<int, int>
#define sz(x) (int) x.size()
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
void solve() {
int n, m; cin>>n>>m;
vector<vector<char>> v(n, vector<char>(m));
for(auto &x : v) for(auto &y : x) cin>>y;
auto get = [&] (int i, int j) {
int mn = 1e9;
int ni = i, nj = j;
while(nj < m && v[i][nj] == '+') nj += 1;
mn = min(mn, nj - j);
nj = j;
while(nj >= 0 && v[i][nj] == '+') nj -= 1;
mn = min(mn, j - nj);
while(ni < n && v[ni][j] == '+') ni += 1;
mn = min(mn, ni - i);
ni = i;
while(ni >= 0 && v[ni][j] == '+') ni -= 1;
mn = min(mn, i - ni);
return 1 + 4 * (mn - 1);
};
int ans = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < m; j++) if(v[i][j] == '+') {
ans = max(ans, get(i, j));
}
}
cout<<ans<<endl;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1, c = 1; cin>>t;
while(t--) {
// cerr<<"Case "<<c++<<": \n";
solve();
}
}