#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1005
int p[MAX][MAX];
int check(int a,int b,int ans){
int temp=p[a][b];
for(int i=0;i<ans;i++)
for(int j=0;j<ans;j++){
if(p[a+i][b+j]!=temp)return 0;
}
return 1;
}
int main(void){
int a,b;
scanf("%d%d",&a,&b);
int mmax;
if(a>b)mmax=a;
else mmax=b;
int ans=0;
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
scanf("%d",&p[i][j]);
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
for(int k=ans+1;k<=mmax;k++){
if(i+k<=mmax&&j+k<=mmax)
if(check(i,j,k))
ans=k;
else break;
}
printf("%d",ans*ans);
return 0;
}
/**************************************************************
Problem: 1954
User: admin
Language: C++
Result: Accepted
Time:51 ms
Memory:5088 kb
****************************************************************/