#include<stdio.h>
#define H 1400
#define W 1400
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define MIN3(a, b, c) ((a) < (MIN(b, c)) ? (a) : (MIN(b, c)))

int a[H][W];

int solve(int h,int w){
	int dp[h][w];
	int max=-1;
	
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			dp[i][j]=0;
		}
	}
	
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			if(a[i][j]==1)
				dp[i][j]=0;
			else if(i==0 || j==0)
				dp[i][j]=!a[i][j];
			else 
				dp[i][j]=MIN3(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1;
			
			max=MAX(dp[i][j],max);
			
		}
	}
	
	return max*max;
}


int main(){
	int h,w;
	
	scanf("%d %d",&h,&w);
	
	for(int i=0;i<h;i++){
		for(int j=0;j<w;j++){
			scanf("%d",&a[i][j]);
		}
	}
	
	printf("%d\n",solve(h,w));
	
	return 0;
	
}
