만드는 중입니다

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

오코노미야키 만들기

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

요약
프라이팬 N칸에 반죽 두 개와 고기 한 조각이 있습니다. 고기가 붙은 반죽을 목표 칸으로 옮기는 최소 뒤집기 횟수를 구하고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

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

문제

일본어 시험이 끝난 뒤 요리 고수 대곽이는 친구들과 같이 오코노미야키를 만들고 있다.

프라이팬은 NN개의 정사각형 칸이 한 줄로 붙어 있는 모양이다. 맨 왼쪽 칸은 1번, 맨 오른쪽 칸은 NN번이다. 오코노미야키 반죽은 두 면이 있는 원판 모양이다. 한쪽은 잘 익은 면이고 다른 쪽은 덜 익은 면이다. 처음에 반죽 2개가 프라이팬의 서로 다른 칸에 놓여 있다. 두 반죽 모두 잘 익은 면이 바닥에 닿아 있고 덜 익은 면이 위를 향한다. 반죽이 놓이지 않은 칸 하나에는 고기 한 덩이가 놓여 있다.

대곽이는 반죽 하나를 고르고, 그 반죽이 있는 칸에 인접한 칸 중 하나를 골라 반죽을 그 칸으로 뒤집는다. 양의 정수 x(1≤x≤N)x (1 \leq x \leq N)에 대해 xx번 칸에 인접한 칸은 다음과 같다. x=1x = 1이면 2번 칸, x=Nx = N이면 N−1N - 1번 칸이다. 2≤x≤N−12 \leq x \leq N-1이면 x−1x-1번 칸과 x+1x+1번 칸이다. 이때 다른 반죽이 이미 놓여 있는 칸은 고를 수 없다. 뒤집을 때마다 다음 변화가 생긴다.

  • 반죽의 위치가 선택한 칸으로 옮겨진다.
  • 반죽이 바닥에 닿은 면과 위를 향한 면이 바뀐다.
  • 선택한 칸에 고기가 있었고 덜 익은 면이 프라이팬과 맞닿으면, 고기가 반죽에 붙는다. 이후 이 반죽을 뒤집을 때 고기도 반죽과 함께 이동한다.
  • 선택한 칸에 고기가 있었고 잘 익은 면이 프라이팬과 맞닿으면, 고기는 반죽에 붙지 않는다. 고기는 원래 자리에 그대로 남고, 이 반죽을 나중에 뒤집어도 움직이지 않는다.

대곽이의 목표는 반죽 2개 중 하나에 고기가 붙어 있고, 고기가 붙은 반죽이 원하는 칸에 위치하도록 하는 것이다. 고기가 붙지 않은 반죽은 어느 칸에 있어도 되고, 어느 면이 위로 향해 있어도 상관없다. 대곽이가 목표를 달성할 수 있는지, 달성할 수 있다면 필요한 최소 뒤집기 횟수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 프라이팬의 칸의 개수를 나타내는 정수 NN이 주어진다. (3≤N≤1 000 000)(3 \leq N \leq 1\,000\,000)

둘째 줄에 오코노미야키 반죽들이 처음에 놓인 칸의 번호 p1p_1과 p2p_2가 공백으로 구분되어 주어진다. (1≤p1<p2≤N)(1 \leq p_1 < p_2 \leq N)

셋째 줄에 고기가 처음에 놓인 칸의 번호 MM이 주어진다. (1≤M≤N;(1 \leq M \leq N; M≠p1;M \ne p_1; M≠p2)M \ne p_2)

넷째 줄에 뒤집기가 모두 끝난 후 고기가 붙은 반죽이 있어야 하는 칸의 번호 SS가 주어진다. (1≤S≤N)(1 \leq S \leq N)

출력

목표를 달성할 수 있으면 필요한 최소 뒤집기 횟수를 한 줄에 출력한다. 달성할 수 없으면 -1을 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    5
    2 4
    3
    4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5
    1 2
    4
    4
    
    예상 출력
    6
    
  3. 예제 3

    입력
    5
    1 5
    3
    3
    
    예상 출력
    -1