벽장문 이동

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

요약
문 n-2개와 열린 칸 2개가 있는 옷장 줄에서, 주어진 순서대로 각 옷장을 열기 위한 최소 문 이동 횟수를 구합니다.
난이도

보통10점 중 6점

유형
그리디, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

같은 크기의 벽장 n개가 일렬로 놓여 있다. 벽장문은 n - 2개뿐이므로, 항상 정확히 두 칸은 열려 있다.

어떤 벽장 앞에 있는 문은 바로 이웃한 벽장이 열려 있을 때만 그 열린 칸으로 한 칸 이동할 수 있다. 문이 이동하면, 원래 문이 있던 벽장은 열리고 문이 도착한 벽장은 닫힌다.

사용해야 하는 벽장 번호들이 순서대로 주어진다. 각 벽장을 그 순서대로 사용할 수 있도록 문을 움직일 때, 문이 이동한 총 횟수의 최솟값을 구하라. 처음에 열려 있는 벽장은 항상 두 개이다.

입력

첫째 줄에 벽장의 개수 n이 주어진다. n은 3보다 크고 20보다 작거나 같다.

둘째 줄에는 처음에 열려 있는 두 벽장의 번호가 주어진다.

셋째 줄에는 사용할 벽장 수 m이 주어진다. m은 최대 20이다.

다음 m개의 줄에는 사용할 벽장 번호가 순서대로 하나씩 주어진다.

출력

문이 이동한 총 횟수의 최솟값을 출력한다.

예제1

  1. 예제 1

    입력
    7
    2 5
    4
    3
    1
    6
    5
    
    예상 출력
    5