#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using vi=vector; using vvi=vector; using pll=pair; using pi=pair; // using mint=modint998244353; // using BoostPoint=boost::polygon::point_data; // using Voronoi=boost::polygon::voronoi_diagram; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int H,W; cin>>H>>W; vectorS(H); rep(i,0,H)cin>>S[i]; vvi dp(H+1,vi(W+1,0)); int L=0; rep(i,1,H+1){ rep(j,1,W+1){ if(S[i-1][j-1]=='.')continue; dp[i][j]=1+min({dp[i-1][j],dp[i][j-1],dp[i-1][j-1]}); L=max(L,dp[i][j]); } } cout<<(L+1)/2<<'\n'; }