import sys
n, m = map(int,sys.stdin.readline().split())
board = [list(map(str,sys.stdin.readline().strip())) for _ in range(n)]
cnt = result = 1
col = row = 0
while True:
if cnt == n or cnt == m: #조사하는 사각형의 크기가 직사각형보다 크다면 종료
break
for i in range(n-cnt): #열: ex)cnt = 0이면 0-1 확인
for j in range(m-cnt): #행: ex)cnt =0이면 0-1 확인
#각 꼭지점이 같은 경우 result = cnt + 1
#cnt 0은 총 1칸인 경우, cnt = 1은 총 4칸인 경우이므로 cnt + 1
if board[i][j] == board[i][cnt+j] and board[i+cnt][j] == board[i+cnt][cnt+j]:
result = cnt + 1
cnt+=1
print((result)**2)
aW1wb3J0IHN5cwoKbiwgbSA9IG1hcChpbnQsc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3BsaXQoKSkKYm9hcmQgPSBbbGlzdChtYXAoc3RyLHN5cy5zdGRpbi5yZWFkbGluZSgpLnN0cmlwKCkpKSBmb3IgXyBpbiByYW5nZShuKV0KCmNudCA9IHJlc3VsdCA9IDEKY29sID0gcm93ID0gMAoKd2hpbGUgVHJ1ZToKICAgIGlmIGNudCA9PSBuIG9yIGNudCA9PSBtOiAj7KGw7IKs7ZWY64qUIOyCrOqwge2YleydmCDtgazquLDqsIAg7KeB7IKs6rCB7ZiV67O064ukIO2BrOuLpOuptCDsooXro4wKICAgICAgICBicmVhawogICAgZm9yIGkgaW4gcmFuZ2Uobi1jbnQpOiAj7Je0OiBleCljbnQgPSAw7J2066m0IDAtMSDtmZXsnbgKICAgICAgICBmb3IgaiBpbiByYW5nZShtLWNudCk6ICPtlok6IGV4KWNudCA9MOydtOuptCAwLTEg7ZmV7J24CiAgICAgICAgICAgICPqsIEg6ryt7KeA7KCQ7J20IOqwmeydgCDqsr3smrAgcmVzdWx0ID0gY250ICsgMQogICAgICAgICAgICAjY250IDDsnYAg7LSdIDHsubjsnbgg6rK97JqwLCBjbnQgPSAx7J2AIOy0nSA07Lm47J24IOqyveyasOydtOuvgOuhnCBjbnQgKyAxCiAgICAgICAgICAgIGlmIGJvYXJkW2ldW2pdID09IGJvYXJkW2ldW2NudCtqXSBhbmQgYm9hcmRbaStjbnRdW2pdID09IGJvYXJkW2krY250XVtjbnQral06CiAgICAgICAgICAgICAgICByZXN1bHQgPSBjbnQgKyAxCiAgICBjbnQrPTEKcHJpbnQoKHJlc3VsdCkqKjIp