활자 인쇄기
시간 제한1초메모리 제한128 MB
하나의 문자열을 편집하는 프린터로 서로 다른 N개의 단어를 임의 순서로 찍을 때 필요한 추가, 삭제, 인쇄 연산 횟수의 최솟값을 구한다.
문제
이동식 활자 인쇄기로 개의 단어를 인쇄하려고 합니다. 이동식 활자 인쇄기는 글자가 하나씩 새겨진 작은 금속 조각들을 순서대로 배치해 단어를 만든 뒤, 그 위에 종이를 눌러 인쇄하는 옛날 방식의 인쇄기입니다. 이 인쇄기로는 다음 세 가지 연산을 할 수 있습니다.
- 현재 인쇄기에 놓인 단어의 끝에 글자 하나를 추가한다.
- 현재 인쇄기에 놓인 단어의 마지막 글자를 제거한다. 단, 인쇄기에 글자가 하나 이상 있을 때만 가능하다.
- 현재 인쇄기에 놓인 단어를 인쇄한다.
처음에 인쇄기는 비어 있습니다(글자 조각이 하나도 없습니다). 모든 인쇄를 마친 뒤 인쇄기에 글자가 남아 있어도 됩니다. 또한 단어는 원하는 순서대로 인쇄해도 됩니다.
모든 연산에는 시간이 걸리므로, 전체 연산 횟수를 최소로 하고 싶습니다.
인쇄할 개의 단어가 주어질 때, 순서에 상관없이 모든 단어를 인쇄하는 데 필요한 최소 연산 횟수를 구하는 프로그램을 작성하세요.
입력
첫째 줄에 인쇄할 단어의 개수 이 주어집니다. ()
다음 개의 줄에 각각 단어가 하나씩 주어집니다. 각 단어는 소문자 알파벳('a'–'z')로만 이루어지며, 길이는 이상 이하입니다. 모든 단어는 서로 다릅니다.
출력
모든 단어를 인쇄하는 데 필요한 최소 연산 횟수 을 한 줄에 출력합니다.