#include<stdio.h>
#define MAX 1400
int dp[MAX][MAX], map[MAX][MAX];
int large_square(int h, int w);
int main(void)
{
  int i, j, h, w;
  scanf("%d%d", &h, &w);
  for (i = 0; i < h; i++) {
    for (j = 0; j < w; j++) {
      scanf("%d", &map[i][j]);
    }
  }
  printf("%d\n", large_square(h, w));
}
int large_square(int h, int w)
{
  int i, j, maxw;
  for (i = 0; i < h; i++) {
    for (j = 0; j < w; j++) {
      dp[i][j] = (map[i][j] + 1) % 2;
    }
  }
  for (i = 1; i < h; i++) {
    for (j = 1; j < w; j++) {
      if (map[i][j]) dp[i][j] = 0;
      else {
        int temp = (dp[i-1][j] < dp[i][j-1] ? dp[i-1][j] : dp[i][j-1]);
        dp[i][j] = (dp[i-1][j-1] < temp ? dp[i-1][j-1] + 1 : temp + 1);
        if (maxw < dp[i][j]) maxw = dp[i][j];
      }
    }
  }
  return maxw * maxw;
}
