만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

축약된 별명

면접 대비

시간 제한2초메모리 제한2048 MB

요약
길이가 l인 서로 다른 별명 n개가 주어졌을 때, 각 별명을 다른 별명과 구별하는 가장 짧은 접두사 길이의 합을 구합니다.
난이도

보통10점 중 4점

유형
문자열, 정렬, 트라이
정답자
아직 제출이 없습니다

문제

당신은 사용자가 많은 대형 인터넷 사이트의 운영자입니다. 모든 사용자는 사이트에 로그인할 때 쓸 별명을 정확히 ll글자로 골랐습니다. 최근 디스크 공간이 부족해지기 시작했습니다. 별명을 모두 저장하는 데 많은 용량이 들기 때문입니다.

추가 저장 공간을 살 예산이 없어서 필요한 저장 공간을 줄일 방법을 찾고 있습니다. 친구가 다음 압축 아이디어를 제안했습니다. 각 사용자의 별명 전체를 저장하는 대신, 다른 별명과 같은 접두사를 갖지 않는 한 접두사만 저장해도 된다는 것입니다. 예를 들어 별명이 james와 jacob뿐이라면 jam과 jac만 저장해도 둘 다 구별할 수 있습니다.

이 아이디어가 꽤 흥미롭고, 디스크에 여유 공간이 생기기를 기대하고 있습니다. 이 압축 기법으로 모든 별명을 저장하는 데 필요한 공간을 구하려고 합니다.

입력

입력은 다음과 같습니다.

  • 첫 줄에 두 정수 nn과 ll (2≤n≤1042 \le n \le 10^4, 1≤l≤1031 \le l \le 10^3)이 주어집니다. 별명의 개수와 각 별명의 길이입니다.
  • 이어서 nn개의 줄에 별명이 한 줄씩 주어집니다. 각 별명은 정확히 ll개의 영어 소문자(a-z)로 이루어진 문자열입니다. 모든 별명은 서로 다릅니다.

출력

이 압축 기법을 적용했을 때 여전히 저장해야 하는 글자의 총 개수를 출력합니다.

예제2

  1. 예제 1

    입력
    2 5
    james
    jacob
    
    예상 출력
    6
    
  2. 예제 2

    입력
    4 4
    xxxx
    yxxx
    xxyx
    yxxy
    
    예상 출력
    14