✅ 정답 공개
n, m = map(int, input().split())
grid = [list(map(int, input().split())) for _ in range(n)]
dp = [[0]*m for _ in range(n)]
max_sq = 0
for i in range(n):
for j in range(m):
if grid[i][j] == 1:
if i == 0 or j == 0:
dp[i][j] = 1
else:
dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1
max_sq = max(max_sq, dp[i][j])
print(max_sq ** 2)