#include<stdio.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
int H,W,i,j,k,t,B[1500][1500],dp[1500][1500]={0},dp2[1500][1500]={0},R=0;


int main()
{
	scanf("%d%d",&H,&W);
	for(i=1;i<=H;i++)
		for(j=1;j<=W;j++)
			scanf("%d",&B[i][j]);
	for(i=1;i<=H;i++)
	{
		for(j=1;j<=W;j++)
			dp[i][j]=(B[i][j]+1)%2;
	}
	for(i=1;i<=H;i++)
		for(j=1;j<=W;j++)
		{
			if(B[i][j])dp[i][j]=0;
			else
			{
				dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1]))+1;
				R=max(R,dp[i][j]);
			}
		}
	printf("%d\n",R*R);
	return 0;
}