#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[2][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[0][i][j]=B[i][j]?0:dp[0][i][j-1]+1;
			dp[1][i][j]=B[i][j]?0:dp[1][i-1][j]+1;
		}
	for(d=1;d<=H;d++)
		for(r=1;r<=W;r++)
		{
			t=dp[0][d][r];
			for(u=d,c=1;c<=dp[0][d][r];c++,u++)
			{
				if(dp[0][u][r]==0)t=min(t,c-1);
				t=min(t,max(dp[0][u][r],c));
			}
			R=R<t*t?t*t:R;
		}

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