아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

활자 인쇄기

시간 제한1초메모리 제한128 MB

요약
하나의 문자열을 편집하는 프린터로 서로 다른 N개의 단어를 임의 순서로 찍을 때 필요한 추가, 삭제, 인쇄 연산 횟수의 최솟값을 구한다.
난이도

보통10점 중 7점

유형
트라이, DFS, 트리, 그리디
정답자
아직 제출이 없습니다

문제

이동식 활자 인쇄기로 NN개의 단어를 인쇄하려고 합니다. 이동식 활자 인쇄기는 글자가 하나씩 새겨진 작은 금속 조각들을 순서대로 배치해 단어를 만든 뒤, 그 위에 종이를 눌러 인쇄하는 옛날 방식의 인쇄기입니다. 이 인쇄기로는 다음 세 가지 연산을 할 수 있습니다.

  • 현재 인쇄기에 놓인 단어의 끝에 글자 하나를 추가한다.
  • 현재 인쇄기에 놓인 단어의 마지막 글자를 제거한다. 단, 인쇄기에 글자가 하나 이상 있을 때만 가능하다.
  • 현재 인쇄기에 놓인 단어를 인쇄한다.

처음에 인쇄기는 비어 있습니다(글자 조각이 하나도 없습니다). 모든 인쇄를 마친 뒤 인쇄기에 글자가 남아 있어도 됩니다. 또한 단어는 원하는 순서대로 인쇄해도 됩니다.

모든 연산에는 시간이 걸리므로, 전체 연산 횟수를 최소로 하고 싶습니다.

인쇄할 NN개의 단어가 주어질 때, 순서에 상관없이 모든 단어를 인쇄하는 데 필요한 최소 연산 횟수를 구하는 프로그램을 작성하세요.

입력

첫째 줄에 인쇄할 단어의 개수 NN이 주어집니다. (1≤N≤250001 \le N \le 25000)

다음 NN개의 줄에 각각 단어가 하나씩 주어집니다. 각 단어는 소문자 알파벳('a'–'z')로만 이루어지며, 길이는 11 이상 2020 이하입니다. 모든 단어는 서로 다릅니다.

출력

모든 단어를 인쇄하는 데 필요한 최소 연산 횟수 MM을 한 줄에 출력합니다.

예제1

  1. 예제 1

    입력
    3
    print
    the
    poem
    
    예상 출력
    20