#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
****************************************************************/