빌보의 생일
시간 제한3초메모리 제한256 MB
같은 이름 N개에 대한 두 순열이 주어질 때, 프로도의 차트와 순서가 다른 쌍의 수와 샘의 차트와 순서가 다른 쌍의 수의 합이 최소가 되는 최종 순서를 찾는다.
문제
프로도와 샘은 곧 열릴 빌보의 111번째 생일 파티를 준비하고 있다. 두 사람은 중간계의 모든 호빗을 초대했고, 한 명도 빠짐없이 모두 참석하기로 했다. 호빗들은 아주 긴 식탁 하나에 한 줄로 나란히 앉는다.
프로도와 샘은 서로 상의하지 않고 각자 좌석 배치표를 하나씩 따로 만들었다. 이제 두 사람은 이 두 배치표를 참고하여 최종 좌석 배치표 하나를 만들려고 한다.
임의의 두 호빗 , 에 대해, 한 배치표에서 가 보다 앞에 앉는지 뒤에 앉는지를 그 배치표에서 두 호빗의 상대적 순서라고 하자. 최종 배치표에서의 상대적 순서가 프로도의 배치표에서의 순서와 다르면 어긋난 것을 하나 세고, 샘의 배치표에서의 순서와 다르면 또 하나를 센다. 즉, 각 호빗 쌍마다 최종 배치표를 프로도와 샘 각각의 배치표와 비교하여 순서가 다른 경우의 수를 모두 더한다.
최종 배치표를 잘 정하여 이렇게 어긋난 경우의 총합을 최소로 만들려고 한다. 그 최솟값을 구하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 호빗의 수를 나타내는 정수 ()이 주어진다. 이어지는 두 줄은 각각 프로도의 좌석 배치표와 샘의 좌석 배치표이며, 한 줄에 서로 다른 개의 이름이 공백으로 구분되어 주어진다. 각 이름은 알파벳 문자로만 이루어지고 길이는 최대 이다. 두 배치표에 등장하는 이름의 집합은 서로 같다. 입력의 마지막 줄에는 이 주어지며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 어긋난 경우의 최솟값을 한 줄에 하나씩 출력한다.