치즈버거 바로잡기
시간 제한2초메모리 제한512 MB
1부터 n까지의 순열이 주어질 때, 네 부분을 c,a,d,b 순서로 재배열하는 연산을 최소 몇 번 적용해야 1,2,...,n으로 정렬되는지 구한다.
문제
치즈버거는 대충 만들 음식이 아니다. 세상에서 가장 맛있는 음식이지만 그만큼 잘못 만들 여지도 많다. 솜씨 좋은 요리사도 재료를 쌓는 순서를 자주 틀린다.
빵 사이에 들어가는 재료의 올바른 순서는 위에서 아래로 다음 하나뿐이다.
- 케첩과 머스터드
- 비프 토마토
- 피클
- 적양파
- 체더치즈
- 마늘
- 소금과 후추
- 미디엄으로 구운 소고기 패티
- 콘샐러드
- 마요네즈
이 순서에서 조금이라도 벗어난 버거는 받아들일 수 없다. 그래서 버거를 다시 쌓아야 할 때가 있다.
접시 위의 공간과 식사 예절 탓에 버거를 손댈 방법은 많지 않다. 실제로 쓸 수 있는 연산은 비트 셔플(bit-shuffle, burger-ineptly-transformed) 하나뿐이다. 비트 셔플은 버거 전체를 연속한 재료로 이루어진 네 부분 , , , 로 나눈 뒤 , , , 순서로 다시 쌓는다. 네 부분의 크기는 마음대로 정할 수 있고 크기가 0이어도 된다.
버거는 빠르게 식으므로, 받아들일 수 있는 버거를 만들기까지 필요한 비트 셔플의 최소 횟수를 구한다.
주어지는 치즈버거는 서로 다른 재료 개로 이루어지고 각 재료에는 부터 까지 번호가 붙는다. 올바른 순서는 항상 이다.

그림 1: 첫 번째 예제 입력을 그린 것이다.

그림 2: 두 번째 예제 입력을 그린 것이다.
입력
첫째 줄에 사용한 재료의 개수 이 주어진다. ()
둘째 줄에 주어진 치즈버거의 재료 순서가 위에서 아래로 정수 개로 주어진다. 재료 번호는 부터 까지이고 각 번호는 정확히 한 번씩 나온다.
출력
주어진 치즈버거를 올바른 순서로 만드는 데 필요한 비트 셔플의 최소 횟수를 출력한다.