Jim은 카드 게임을 통계적으로 분석하는 프로그램을 작성하고 있습니다. 그는 서로 다른 여러 개의 카드 패를 메모리에 효율적으로 저장해야 합니다. 각 카드는 네 가지 무늬(suit) 중 하나와 열세 가지 값(value) 중 하나를 가집니다. 그의 구현에서 각 패는 정해진 표준(canonical) 순서로 정렬된 카드들의 연결 리스트(linked list)로 저장됩니다.
카드는 먼저 무늬 순으로 정렬됩니다. 클럽(C)이 모두 먼저 오고, 그다음 다이아몬드(D), 하트(H), 마지막으로 스페이드(S)가 옵니다. 같은 무늬 안에서는 A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K 의 값 순서로 정렬됩니다. 각 패에는 같은 카드가 최대 한 장만 들어갑니다.
카드 패들이 너무 많은 메모리를 사용하기 때문에, Jim은 더 효율적인 표현을 시도하려 합니다. 두 리스트가 공통의 꼬리(tail, 즉 리스트 뒷부분의 공통 접미부)를 공유하면, 그 꼬리를 한 벌만 남겨 공유하도록 갱신하고 나머지 사본은 버릴 수 있습니다. 이 과정은 어떤 두 리스트도 더 이상 공통 꼬리를 공유하지 않을 때까지 반복할 수 있습니다.
모든 카드 패를 저장하는 데 필요한 연결 리스트 노드의 개수를 구하세요.
입력은 여러 개의 테스트 케이스로 이루어지며, 마지막에는 0 하나만 있는 줄이 옵니다. 각 테스트 케이스의 첫 줄에는 카드 패의 개수가 주어집니다. 이어지는 각 줄은 하나의 카드 패를 나타냅니다. 각 줄은 그 패에 들어 있는 카드의 개수로 시작하고, 그 뒤에 카드들이 위에서 정의한 표준 순서대로 공백으로 구분되어 나열됩니다. 각 카드는 값을 먼저 쓰고 그 뒤에 무늬(C, D, H, S)를 붙여 표기합니다. 모든 패에 들어 있는 카드는 전부 합쳐 최대 100,000장입니다.
각 테스트 케이스마다, 모든 리스트를 저장하는 데 필요한 연결 리스트 노드의 개수를 한 줄에 출력하세요.