만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

일관된 글자 경로

면접 대비

시간 제한2초메모리 제한512 MB

요약
N×N 격자에서 같은 문자가 대문자와 소문자로 함께 등장하지 않도록 하며 왼쪽 위에서 오른쪽 아래로 가는 최단 경로의 길이를 구한다.
난이도

보통10점 중 6점

유형
BFS, 비트 연산, 그래프, 최단 경로
정답자
아직 제출이 없습니다

문제

논리 도시의 공원은 N×NN \times N 격자다 (2≤N≤1002 \le N \le 100). 각 칸에는 알파벳 첫 10글자 abcdefghij 중 하나가 소문자나 대문자로 적혀 있다. 이 도시 사람들은 공원을 건널 때 일관된 경로만 따른다. 소문자 c가 적힌 칸을 지났다면 그 뒤로 대문자 C가 적힌 칸은 지나지 않는다.

일관된 경로는 다음 두 조건을 만족하는 칸의 수열이다.

  • 수열에서 이웃한 두 칸은 변을 맞대고 있다. 이동은 상하좌우로만 한다.
  • 어떤 글자도 수열에서 소문자와 대문자로 함께 나타나지 않는다. 각 글자는 수열에 아예 없거나, 소문자로만 나타나거나, 대문자로만 나타난다.

경로의 길이는 수열에 들어 있는 칸의 개수이고, 시작 칸과 끝 칸도 센다.

아래 그림에서 왼쪽은 공원이고, 오른쪽은 그 공원에서 길이가 13인 일관된 경로 하나를 나타낸다. 경로에 속한 칸은 글자를 그대로 두고 나머지 칸은 점으로 바꿨다.

DdaAaA D.....
CBAcca C.....
eEaeeE e.....
bBbabB b.bab.
DbDdDc DbD.D.
fFaAaC ....aC

왼쪽 위 칸 (1,1)(1, 1)에서 오른쪽 아래 칸 (N,N)(N, N)까지 가는 가장 짧은 일관된 경로의 길이를 구하라.

입력

첫째 줄에 공원의 크기 NN이 주어진다 (2≤N≤1002 \le N \le 100). 다음 NN개 줄에 각각 길이 NN인 문자열이 주어진다. ii번째 문자열의 jj번째 글자는 칸 (i,j)(i, j)에 적힌 글자이고, abcdefghij와 ABCDEFGHIJ 중 하나다.

출력

(1,1)(1, 1)에서 (N,N)(N, N)까지 가는 가장 짧은 일관된 경로의 길이를 한 줄에 출력한다. 그런 경로가 없으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    6
    DdaAaA
    CBAcca
    eEaeeE
    bBbabB
    DbDdDc
    fFaAaC
    
    예상 출력
    13
    
  2. 예제 2

    입력
    7
    aAaaaaa
    aAaaaAa
    aAaaaAA
    aaAaAaa
    AaAaaAa
    aaAAaAa
    aaaaaAa
    
    예상 출력
    -1