아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

히히 못가

시간 제한1.5초메모리 제한1024 MB

요약
같은 알파벳끼리 연결된 영역으로 나뉜 N×N 격자에서 왼쪽 위와 오른쪽 아래를 분리하기 위해 사야 하는 최소 칸 수를 구한다.
난이도

보통10점 중 7점

유형
그래프, DFS, 최소 신장 트리
정답자
아직 제출이 없습니다

문제


 

N×NN \times N 격자 모양의 땅에서 로미오는 가장 왼쪽 위 칸, 줄리엣은 가장 오른쪽 아래 칸에 살고 있다. 로미오는 매일 줄리엣을 만나러 가는데, 상하좌우로 인접한 칸으로 이동할 수 있고 땅 밖으로는 나갈 수 없다.

주변을 어슬렁거리던 솔로 부대 상원이는 로미오와 줄리엣의 만남이 마음에 들지 않는다. 수많은 솔로들의 후원으로 돈이 많은 상원이는 로미오와 줄리엣이 만날 수 없도록 주변 땅을 사버리기로 했다.

땅은 몇 개의 영역으로 구분되어있고 이 영역 단위로만 땅을 살 수 있다. 각 영역의 구분을 위해 격자 칸마다 알파벳 대문자를 적어 놓았는데, 상하좌우로 인접한 두 칸의 알파벳이 같다는 것은 같은 영역에 속한 땅이라는 뜻이다. 어떤 두 칸의 알파벳이 같더라도 연결되어 있지 않다면, 다른 영역에 속할 수 있다.

로미오가 줄리엣을 만나는 것을 막기 위해 상원이가 최소 몇 칸의 땅을 사야 하는지 구해보자.

입력

첫 번째 줄에 NN이 주어진다. (2 ≤N≤1,000)(2 \le N \le 1\\,000)

두 번째 줄부터 NN개의 줄에 땅의 정보를 나타내는 알파벳 대문자 NN개가 주어진다. 단, 로미오와 줄리엣의 위치는 .으로 주어진다.

출력

상원이가 최소 몇 칸의 땅을 사야 하는지 출력한다.

예제3

  1. 예제 1

    입력
    6
    .BBBAA
    CBBAAH
    CBGDFH
    CBEDFH
    CIEFFH
    IIEFF.
    
    예상 출력
    8
    
  2. 예제 2

    입력
    5
    .BABA
    ABABA
    ABABA
    ABABA
    ABAB.
    
    예상 출력
    5
    
  3. 예제 3

    입력
    4
    .YZZ
    YYZX
    ZZZW
    XXX.
    
    예상 출력
    3