카롤렉은 크리스마스 선물로 컴퓨터를 받았습니다. 하지만 산타에게 보낸 편지에 게임도 함께 넣어 달라고 적어 두지 않은 탓에, 지뢰 찾기와 카드놀이(솔리테어)만으로 만족해야 했습니다. 그러던 어느 날, 앞의 두 게임보다 훨씬 흥미로운 프로그램 하나를 발견했습니다.
바로 흑백 그림을 그리는 간단한 프로그램 Pejntbrasz입니다. 이 프로그램으로는 직사각형 모양의 흑백 그림을 만들 수 있습니다. 크기가 h×w인 그림은 정사각형 픽셀 h×w개로 이루어집니다. 카롤렉이 가장 마음에 들어 한 기능은 색 채우기 도구였고, 여기에서 새로운 게임을 떠올렸습니다. 규칙은 간단합니다. 흑백 그림이 주어졌을 때, 색 채우기 연산을 되도록 적게 사용하여 모든 픽셀을 같은 색으로 만드는 것입니다.
주어진 그림에 대해 게임을 끝내는 데 필요한 색 채우기 연산의 최소 횟수를 구하는 프로그램을 작성하세요.
색 채우기 도구의 자세한 동작
두 픽셀이 변을 공유하면 서로 인접한다고 합니다. 두 픽셀 pA, pB가 연결되어 있다는 것은, 같은 색 픽셀들의 나열 pA=p0,p1,…,pk=pB가 존재하여 모든 0≤i<k에 대해 pi와 pi+1이 서로 인접함을 뜻합니다. 영역이란 서로 연결된 픽셀들의 극대 집합입니다. 색 채우기 도구를 쓰려면 그림에서 픽셀 하나를 고릅니다. 그러면 고른 픽셀이 속한 영역의 모든 픽셀의 색이 한꺼번에 바뀝니다.
첫째 줄에 그림의 높이와 너비를 나타내는 두 양의 정수 h와 w가 주어집니다. 그림의 픽셀 수는 500을 넘지 않습니다(즉 h×w≤500). 이어지는 h개의 줄에 그림이 주어지며, 각 줄에는 문자 w개가 있습니다. '.'는 흰색 픽셀을, 'X'는 검은색 픽셀을 나타냅니다.
모든 픽셀을 같은 색으로 만드는 데 필요한 색 채우기 연산의 최소 횟수를 한 줄에 출력합니다.