만드는 중입니다

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

현대모비스 자율 주행 테스팅 2

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

요약
샘플 트랙을 순서대로 이어 붙인 2행 트랙에서 첫 열부터 마지막 열까지 도로 칸만 지나 이동하는 최소 이동 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
행렬, 동적 계획법, 최단 경로
정답자
아직 제출이 없습니다

문제

이 문제는 현대모비스 자율 주행 테스팅 1 문제와 입력 형식이 다릅니다. 이 문제의 코드로 현대모비스 자율 주행 테스팅 1 문제를 해결할 수는 없으니 주의하세요.

현대모비스는 모빌리티 플랫폼 프로바이더로서 SDV(Software Defined Vehicle) 시대를 이끌기 위해 자율주행, 전동화, 커넥티비티 등 여러 분야에서 SW 연구개발을 활발히 진행하고 있다. 특히 서산 주행 시험장에서는 자율 주행 자동차 개발을 위한 시범 주행이 한창이다.

샘플 주행 트랙은 모두 MM종류이며, 각각 11번부터 MM번까지 번호가 매겨져 있다. ii번 샘플 주행 트랙은 22행 NiN_i열이며, 각 칸은 도로 또는 장애물이다. 시범 주행 트랙은 샘플 주행 트랙 KK개를 차례로 이어 붙여 만든다. 시범 주행 트랙에 쓰인 샘플 주행 트랙의 번호를 차례로 A1,A2,⋯ ,AKA_1, A_2, \cdots, A_K라 하면, 시범 주행 트랙은 22행 ∑i=1KNAi\sum_{i=1}^K N_{A_i}열이 된다.

자동차는 다음 두 가지 방법으로 트랙 위를 이동할 수 있다.

  • 차선 변경: 같은 열의 다른 행으로 이동한다. 즉 11행 jj열에 있으면 22행 jj열로, 22행 jj열에 있으면 11행 jj열로 이동한다.
  • 직진: 같은 행의 다음 열로 이동한다. 즉 ii행 jj열에 있으면 ii행 j+1j+1열로 이동한다.

두 경우 모두 도착하는 칸에 장애물이 있으면 안 된다.

시범 주행은 트랙의 첫 번째 열에서 시작하고, 마지막 열에 도달하면 끝난다. 시작 칸과 끝 칸은 자유롭게 정할 수 있지만, 둘 다 도로여야 한다. 자율 주행 자동차가 시범 주행 트랙을 완주할 수 있는지 판별하고, 완주할 수 있다면 완주에 필요한 최소 이동 횟수를 구하라.

입력

첫째 줄에 샘플 주행 트랙의 종류 수 MM과 샘플 주행 트랙을 이어 붙인 횟수 KK가 공백으로 구분되어 주어진다. (1≤M,K≤200 0001 \le M, K \le 200\,000)

둘째 줄에 시범 주행 트랙을 구성하는 샘플 주행 트랙의 번호 A1,A2,⋯ ,AKA_1, A_2, \cdots, A_K가 차례대로 공백으로 구분되어 주어진다. (1≤Ai≤M1 \le A_i \le M)

셋째 줄부터 2M2M개의 줄에 걸쳐 ii번 샘플 주행 트랙의 정보가 주어진다. 2i+12i+1번째 줄에는 ii번 샘플 주행 트랙의 11행을 나타내는 길이 NiN_i의 문자열 Si1S_{i1}이 주어진다. 2i+22i+2번째 줄에는 22행을 나타내는 길이 NiN_i의 문자열 Si2S_{i2}가 주어진다. (1≤Ni≤500 0001 \le N_i \le 500\,000)

모든 문자열은 . 또는 #으로만 이루어져 있다. .은 도로, #은 장애물을 뜻한다. NiN_i의 합은 500000 이하이다.

출력

자율 주행 자동차가 시범 주행 트랙을 완주하는 데 필요한 최소 이동 횟수를 출력한다. 완주할 수 없다면 -1을 출력한다.

예제4

  1. 예제 1

    입력
    2 3
    1 2 1
    #..
    ...
    ..
    #.
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3 3
    1 3 1
    .#.
    ...
    ##
    ##
    .
    #
    
    예상 출력
    8
    
  3. 예제 3

    입력
    2 2
    1 2
    ...
    ...
    #..
    ..#
    
    예상 출력
    6
    
  4. 예제 4

    입력
    2 3
    1 2 1
    ..#
    ...
    .
    #
    
    예상 출력
    -1