- 전에 풀었던 [체스판 다시 칠하기]문제와 비슷하다고 생각해서 바로 삼중 반복문을 떠올릴 수 있었다.
- 인덱스 에러를 많이 출력했고 종이에 적어가면서 거듭 수정하면서 문제를 힘겹게 풀었다.
N, M = map(int, input().split())
square = []
for _ in range(N):
square.append(list(input()))
result = []
for i in range(N): # 세로
for j in range(M): # 가로
for t in range(min(N, M)):
# 세로의 길이는 N보다 작으면서 가로의 길이는 M보다 작으면서 모든 꼭짓점의 값이 같다면?
if i + t < N and j + t < M and square[i][j] == square[i+t][j] == square[i][j+t] == square[i+t][j+t]:
result.append((t+1)**2)
print(max(result))