#include #include using namespace std; const int INF = 10000; int main(){ int H, W; cin >> H >> W; vector> S(H + 2, vector(W + 2, '.')); for (int i = 1; i <= H; i++){ for (int j = 1; j <= W; j++){ cin >> S[i][j]; } } vector> U(H + 2, vector(W + 2, 0)); for (int i = 1; i <= H; i++){ for (int j = 1; j <= W; j++){ if (S[i][j] == '#'){ U[i][j] = U[i - 1][j] + 1; } } } vector> D(H + 2, vector(W + 2, 0)); for (int i = H; i >= 1; i--){ for (int j = 1; j <= W; j++){ if (S[i][j] == '#'){ D[i][j] = D[i + 1][j] + 1; } } } vector> L(H + 2, vector(W + 2, 0)); for (int j = 1; j <= W; j++){ for (int i = 1; i <= H; i++){ if (S[i][j] == '#'){ L[i][j] = L[i][j - 1] + 1; } } } vector> R(H + 2, vector(W + 2, 0)); for (int j = W; j >= 1; j--){ for (int i = 1; i <= H; i++){ if (S[i][j] == '#'){ R[i][j] = R[i][j + 1] + 1; } } } int ans = 0; for (int i = 1; i <= H; i++){ for (int j = 1; j <= W; j++){ int mn = INF; mn = min(mn, U[i][j]); mn = min(mn, D[i][j]); mn = min(mn, L[i][j]); mn = min(mn, R[i][j]); ans = max(ans, mn); } } cout << ans << endl; }