

정사각형이 완성되는 범위 내에서 변의 길이를 1씩 확장시켜 그때마다 꼭짓점의 값이 일치하는지 확인합니다.N,M = list(map(int,input().split(" ")))
board = []
for _ in range(N):
    board.append(list(input())) #저는 문자열로 두는 것보다 list에 값을 하나씩 담는 걸 선호합니다.
max_ = 1 
def func(i,j):
    global max_
    c = 1 # 변의 길이입니다
    #현재 위치(i,j)에서 변의 길이를 늘렸을 때 행렬의 범위를 벗어나지 않아야 합니다
    while (i+c<N and j+c<M): 
    	# 네 꼭짓점이 같은 값인지를 판단합니다
        if board[i][j] == board[i+c][j] == board[i][j+c] == board[i+c][j+c]:
            max_ = max(max_,(1+c)*(1+c)) #같다면 이전의 값과 비교해 더 큰 걸 취합니다
        c+=1 #변의 길이는 꼭지점이 같은지 여부와 관계 없이 1씩 증가합니다
        
for i in range(N):
    for j in range(M):
        func(i,j) #모든 입력값에 대해 정사각형 판별을 실행합니다
print(max_)