#include<stdio.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
int H,W,i,j,u,r,l,c,d,t,B[2000][2000],dp[2000][2000]={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]?0:dp[i][j-1]+1;
		}
	for(u=0;u<=H;u++)
		for(r=1;r<=W+1;r++)
			for(l=0;l<r;l++)
			{
				if(dp[u][r]-dp[u][l]>0)
				{
					t=min(dp[u][r]-dp[u][l],H-u+1);
					for(d=u;d<=H+1&&d-u>=t;d++)
						t=min(t,max(0,dp[d][r]-dp[d][l]));
					if(t>0)
						R=max(R,t*t);
				}
			}

	printf("%d\n",R);
	return 0;
}