/*
Zenit CK 2011/2012, uloha e)
Riesenie by Zemco
Dynamicke programovanie, DP[i][j] znamena, aby najvacsi
otoceny stvorec ma dolny bod v mieste [i][j]?
Pocitame postupne pre zvacsujuce sa i a zvacsujuce sa j.
Cas O(R*C), pamat (R*C) dala by sa zlepsit.
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#define FOR(i,N) for(int i=0;i<N;i++)
using namespace std;
int R,C;
//vstup si pamatame s ramom 2 stlpce a 2 riadky, tvorenym bodkami. zjednodusuje to program
char I[1050][1050];
int DP[1050][1050];
//velkost hrany -> velkost diamantu
int edgetosize(int e){
return (2*e-1)*(2*e-1) - 2*(e*(e-1));
}
int main(){
scanf("%d %d ",&R,&C);
memset(I,'.',sizeof(I));
//maly implementacny trik. scanfu podhodime adresu az od tretieho znaku, nech nam necha 2 ramove bodky
FOR(i,R) scanf("%s ",&I[i+2][2]);
int mx = 0;
FOR(ii,R)FOR(jj,C){
int i = ii+2;
int j = jj+2;
if (I[i][j] == '.') DP[i][j] = 0;
else DP[i][j] = 1+min(min(DP[i-1][j-1],DP[i-1][j+1]),min(DP[i-2][j],DP[i-1][j]));
mx = max(mx,DP[i][j]);
}
printf("%d\n",edgetosize(mx));
}
LyoKICBaZW5pdCBDSyAyMDExLzIwMTIsIHVsb2hhIGUpCiAgUmllc2VuaWUgYnkgWmVtY28KCiAgRHluYW1pY2tlIHByb2dyYW1vdmFuaWUsIERQW2ldW2pdIHpuYW1lbmEsIGFieSBuYWp2YWNzaQogIG90b2Nlbnkgc3R2b3JlYyBtYSBkb2xueSBib2QgdiBtaWVzdGUgW2ldW2pdPwogIFBvY2l0YW1lIHBvc3R1cG5lIHByZSB6dmFjc3VqdWNlIHNhIGkgYSB6dmFjc3VqdWNlIHNhIGouCiAgQ2FzIE8oUipDKSwgcGFtYXQgKFIqQykgZGFsYSBieSBzYSB6bGVwc2l0LgogICAqLwojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2RlZmluZSBGT1IoaSxOKSBmb3IoaW50IGk9MDtpPE47aSsrKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgUixDOwovL3ZzdHVwIHNpIHBhbWF0YW1lIHMgcmFtb20gMiBzdGxwY2UgYSAyIHJpYWRreSwgdHZvcmVueW0gYm9ka2FtaS4gemplZG5vZHVzdWplIHRvIHByb2dyYW0KY2hhciBJWzEwNTBdWzEwNTBdOwppbnQgRFBbMTA1MF1bMTA1MF07CgovL3ZlbGtvc3QgaHJhbnkgLT4gIHZlbGtvc3QgZGlhbWFudHUKaW50IGVkZ2V0b3NpemUoaW50IGUpewogIHJldHVybiAoMiplLTEpKigyKmUtMSkgLSAyKihlKihlLTEpKTsKfQoKaW50IG1haW4oKXsKICBzY2FuZigiJWQgJWQgIiwmUiwmQyk7CiAgbWVtc2V0KEksJy4nLHNpemVvZihJKSk7CiAgLy9tYWx5IGltcGxlbWVudGFjbnkgdHJpay4gc2NhbmZ1IHBvZGhvZGltZSBhZHJlc3UgYXogb2QgdHJldGllaG8gem5ha3UsIG5lY2ggbmFtIG5lY2hhIDIgcmFtb3ZlIGJvZGt5CiAgRk9SKGksUikgc2NhbmYoIiVzICIsJklbaSsyXVsyXSk7CiAgaW50IG14ID0gMDsKICBGT1IoaWksUilGT1IoamosQyl7CiAgICBpbnQgaSA9IGlpKzI7CiAgICBpbnQgaiA9IGpqKzI7CiAgICBpZiAoSVtpXVtqXSA9PSAnLicpIERQW2ldW2pdID0gMDsKICAgIGVsc2UgRFBbaV1bal0gPSAxK21pbihtaW4oRFBbaS0xXVtqLTFdLERQW2ktMV1baisxXSksbWluKERQW2ktMl1bal0sRFBbaS0xXVtqXSkpOwogICAgbXggPSBtYXgobXgsRFBbaV1bal0pOwogIH0KICBwcmludGYoIiVkXG4iLGVkZ2V0b3NpemUobXgpKTsKfQ==