빌보의 생일

시간 제한3초메모리 제한256 MB

문제

프로도와 샘은 곧 열릴 빌보의 111번째 생일 파티를 준비하고 있다. 두 사람은 중간계의 모든 호빗을 초대했고, 한 명도 빠짐없이 모두 참석하기로 했다. 호빗들은 아주 긴 식탁 하나에 한 줄로 나란히 앉는다.

프로도와 샘은 서로 상의하지 않고 각자 좌석 배치표를 하나씩 따로 만들었다. 이제 두 사람은 이 두 배치표를 참고하여 최종 좌석 배치표 하나를 만들려고 한다.

임의의 두 호빗 $x$, $y$에 대해, 한 배치표에서 $x$가 $y$보다 앞에 앉는지 뒤에 앉는지를 그 배치표에서 두 호빗의 상대적 순서라고 하자. 최종 배치표에서의 상대적 순서가 프로도의 배치표에서의 순서와 다르면 어긋난 것을 하나 세고, 샘의 배치표에서의 순서와 다르면 또 하나를 센다. 즉, 각 호빗 쌍마다 최종 배치표를 프로도와 샘 각각의 배치표와 비교하여 순서가 다른 경우의 수를 모두 더한다.

최종 배치표를 잘 정하여 이렇게 어긋난 경우의 총합을 최소로 만들려고 한다. 그 최솟값을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 호빗의 수를 나타내는 정수 $N$ ($1 \le N \le 100,000$)이 주어진다. 이어지는 두 줄은 각각 프로도의 좌석 배치표와 샘의 좌석 배치표이며, 한 줄에 서로 다른 $N$개의 이름이 공백으로 구분되어 주어진다. 각 이름은 알파벳 문자로만 이루어지고 길이는 최대 $6$이다. 두 배치표에 등장하는 이름의 집합은 서로 같다. 입력의 마지막 줄에는 $0$이 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 어긋난 경우의 최솟값을 한 줄에 하나씩 출력한다.