페카의 학생 시절
시간 제한1초메모리 제한1024 MB
화물 종류가 짝지어진 N량짜리 두 열차가 있고, 열차를 한 칸씩 앞으로 옮기는 데 드링크 한 캔이 들 때 모든 화물을 옮기는 데 필요한 최소 캔 수를 구한다.
문제
페카는 자라서 학생이 되었고, 학업이 없는 시간에 철도 화차를 하역하는 아르바이트를 한다. 그는 한 열차의 화물을 옆 평행 선로에 있는 다른 열차로 옮겨야 한다.
첫 번째 열차의 각 화차에 어떤 화물이 있는지, 그리고 두 번째 열차의 각 화차에 어떤 화물이 있어야 하는지는 알려져 있다. 첫 번째 열차의 어떤 화차에 있는 화물이든, 그 맞은편에 있는 두 번째 열차의 화차로 컨베이어를 이용해 쉽게 옮길 수 있다. 문제는 첫 번째 열차의 화차 순서가 두 번째 열차의 화차 순서와 맞지 않을 수 있다는 점이다.
첫 번째 열차의 어떤 화차에 있는 화물을 두 번째 열차의 올바른 화차에 넣기 위해, 페카는 어느 한쪽 열차를 화차 한 칸 길이만큼 (내리막 방향으로만) 밀 수 있고, 그때마다 에너지 음료 한 캔을 마셔야 한다.
페카는 건강을 매우 신경 쓰기 때문에 에너지 음료를 남용하고 싶지 않다. 첫 번째 열차의 모든 화물을 옮기려면 페카가 최소 몇 캔의 음료를 마셔야 하는지 구하자.
다음이 성립한다.
- 모든 화차의 길이는 같다.
- 화물의 각 종류에는 정해진 단어, 즉 이름이 대응된다 ("
Oil", "Wood" 등). - 어떤 종류의 화물을 실은 첫 번째 열차의 화차 수는, 같은 종류의 화물을 실을 두 번째 열차의 화차 수와 같다.
- 첫 번째 열차에 같은 종류의 화물을 실은 화차가 여러 개 있을 수 있다. 이때 그중 어느 것이든 대응하는 두 번째 열차의 화차로 옮길 수 있다 (단, 전부 옮겨야 한다).
- 특정 종류의 화물을 실은 첫 번째 열차의 화차가 그 화물을 받을 두 번째 열차의 화차 맞은편에 오면, 페카는 화물을 옮길 수도 있고 옮기지 않을 수도 있다.
- 처음에 열차들은 첫 번째 열차의 첫 화차가 두 번째 열차의 첫 화차 맞은편에, 첫 번째 열차의 마지막 화차가 두 번째 열차의 마지막 화차 맞은편에 오도록 서 있다.
입력
첫 번째 줄에는 열차의 화차 수 이 주어진다 (). 다음 개 줄은 첫 번째 열차의 화차를 연결된 순서대로 나타낸다. 각 줄에는 해당 화차에 있는 화물의 이름이 하나씩 주어진다. 이름은 라틴 알파벳 대소문자로 이루어지며 길이는 1에서 10까지다. 이름은 대소문자를 구분해 같으면 같은 것으로 본다 (예를 들어 "Oil"과 "oil"은 다른 화물이다). 그다음에는 두 번째 열차의 화차를 같은 형식으로 나타낸 개 줄이 주어진다.
출력
페카가 화물을 옮기는 데 필요한 에너지 음료 캔의 최소 개수를 출력한다.