목수

아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

바이트아사르는 체커를 한 판 두고 싶은데, 체스판이 어디로 갔는지 보이지 않는다. 대신 찾아낸 것은 n×mn \times m 크기의 나무판으로, 크기가 같은 정사각형 칸 nmnm개로 나뉘어 있다. 각 칸은 흰색이나 검은색으로 칠해져 있지만, 색이 체스판처럼 번갈아 놓여 있다는 보장은 없다.

그래서 바이트아사르는 목수 경험을 살려 톱으로 체스판을 잘라내려 한다. 여기서 체스판이란 정사각형 칸으로 이루어진 정사각형이고, 변을 맞대고 있는 두 칸의 색이 항상 서로 다른 것을 말한다. 칸 하나뿐인 1×11 \times 1 정사각형은 변을 맞댄 칸의 쌍이 없으므로 이것도 체스판이다.

나무판에 원하는 크기의 체스판이 그대로 들어 있지 않을 수도 있다. 그래서 바이트아사르는 삼각형 조각 두 개를 잘라낸 다음 서로 붙여서 체스판을 만들기로 했다. 두 조각은 겹치지 않아야 하지만, 잘라낸 뒤에는 마음대로 돌려서 붙일 수 있다.

조각은 이렇게 잘라낸다. 나무판에서 한 변이 kk칸인 정사각형 영역을 하나 고르고, 그 영역의 대각선을 따라 톱질하면 삼각형 조각 하나를 얻는다. 두 직각변은 칸의 경계선을 따라가고 빗변은 칸의 꼭짓점을 지나므로, 빗변이 지나가는 칸은 정확히 절반으로 갈라진다. 이렇게 얻은 조각 두 개를 빗변끼리 맞대어 붙이면 k×kk \times k 정사각형이 된다. 빗변에서 만난 두 반쪽은 완성된 정사각형의 한 칸이 되므로 색이 같아야 한다.

두 조각은 서로 겹칠 수 없다. 다만 톱날이 지나간 칸의 두 반쪽을 서로 다른 조각이 하나씩 가져가는 것은 겹치는 것이 아니다. 아래 그림은 4×54 \times 5 나무판에서 삼각형 두 개를 잘라내 3×33 \times 3 체스판을 만드는 예이다.

이 방법으로 만들 수 있는 체스판의 가장 큰 크기를 구하라.

입력

첫째 줄에 나무판의 크기를 나타내는 두 정수 nnmm이 주어진다. (1n,m10001 \le n, m \le 1000)

다음 nn개 줄에는 각각 mm개의 정수가 주어진다. ii번째 줄의 jj번째 수는 ii번째 행과 jj번째 열이 만나는 칸의 색이고, 00은 흰색, 11은 검은색이다. (1in1 \le i \le n, 1jm1 \le j \le m)

출력

삼각형 조각 두 개를 잘라 붙여서 만들 수 있는 가장 큰 체스판의 한 변에 놓인 칸의 수를 정수 하나로 출력한다.