이름 나누기

아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

Nlogonia의 여왕이 수도를 Sortonia라는 새 도시로 옮긴다. 도시는 N×NN \times N 격자로 설계했고, 남북으로 뻗은 대로 NN개와 동서로 뻗은 거리 NN개로 이루어진다. 모든 대로는 모든 거리와 한 번씩 만나며, 대로끼리 또는 거리끼리는 만나지 않는다.

도시가 거의 완성되어 이제 대로와 거리에 이름을 붙여야 한다. 주민 투표로 쓸 이름 2N2N개는 이미 골랐지만, 그중 어떤 이름을 거리에 쓰고 어떤 이름을 대로에 쓸지는 아직 정하지 않았다. 교차로마다 그곳에서 만나는 거리와 대로를 알리는 표지판을 세워야 하는데, 여왕이 표지판 글자를 금에 루비를 박아 새기라고 명령했으므로 이 결정이 중요하다.

회계를 맡은 당신은 표지판에 새기는 글자 수의 합을 최소로 줄여야 한다. 방법은 이름을 줄여 쓰는 것이다. 어떤 대로 이름의 약자는 다른 어떤 대로 이름의 접두사도 아닌 가장 짧은 접두사이고, 거리 이름의 약자는 다른 거리 이름을 기준으로 같은 방식으로 정한다. 따라서 약자는 이름 2N2N개를 거리 이름 NN개와 대로 이름 NN개로 어떻게 나누는지에 따라 달라진다.

N=2N = 2이고 고른 이름이 GAUSS, GALOIS, ERDOS, EULER인 경우를 보자. 거리에 GAUSS와 GALOIS를, 대로에 ERDOS와 EULER를 붙이면 약자는 차례로 GAU, GAL, ER, EU가 된다. 표지판 네 개에는 GAU|ER, GAU|EU, GAL|ER, GAL|EU가 적히고 글자 수의 합은 20이다. 거리에 GAUSS와 ERDOS를, 대로에 GALOIS와 EULER를 붙이면 약자는 G, E, G, E가 되고 표지판에는 G|G, G|E, E|G, E|E가 적혀 글자 수의 합이 8로 줄어든다.

고른 이름 중 어떤 것도 다른 이름의 접두사가 아니므로 약자는 항상 존재한다. 이름을 최적으로 나눴을 때 표지판에 새기는 글자 수의 합의 최솟값을 구하라.

입력

첫째 줄에 거리의 수이자 대로의 수인 정수 NN이 주어진다 (2N1002 \le N \le 100). 다음 2N2N개 줄에는 고른 이름이 한 줄에 하나씩 주어진다. 각 이름은 대문자로만 이루어진 길이 18 이하의 문자열이다. 입력에 주어진 이름 중 어떤 것도 다른 이름의 접두사가 아니다.

출력

이름을 최적으로 나눴을 때 표지판에 새기는 글자 수의 합의 최솟값을 한 줄에 출력한다.