섞어 만들기

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

요약
서로 다른 단어들이 주어질 때, 각 단어가 앞 단어에 글자 하나를 더해 재배열한 것이 되는 가장 긴 사슬의 길이를 구한다.
난이도

보통10점 중 6점

유형
해시맵, 동적 계획법, 문자열, 정렬
정답자
아직 제출이 없습니다

문제

소문자로 이루어진 단어들의 목록이 주어진다. 이 목록에서 각 wiw_i가 wi−1w_{i-1}의 섞은 확장(mixed extension) 이 되는 가장 긴 단어 사슬 w1,w2,…,wnw_1, w_2, \ldots, w_n 을 찾아라.

단어 AA가 단어 BB의 섞은 확장 이라는 것은, BB에 글자 하나를 더한 뒤 모든 글자를 임의의 순서로 재배열하여 AA를 만들 수 있다는 뜻이다. 즉, AA의 글자 다중집합이 BB의 글자 다중집합에 글자 하나를 더한 것과 같을 때 (따라서 AA의 길이는 BB의 길이보다 정확히 11 크다), AA는 BB의 섞은 확장이다.

예를 들어 단어 ab, bar, crab, cobra, carbon 은 각 단어가 바로 앞 단어의 섞은 확장이므로 길이 55 의 사슬을 이룬다.

입력

입력은 최소 22개, 최대 1000010000개의 줄로 이루어진다. 각 줄에는 단어가 하나씩 들어 있다. 각 단어의 길이는 11 이상 2020 이하이며 소문자로만 이루어진다. 모든 단어는 서로 다르다.

출력

가장 긴 사슬의 길이, 즉 그 사슬에 포함된 단어의 개수를 정수 하나로 출력하라.

예제1

  1. 예제 1

    입력
    ab
    arc
    arco
    bar
    bran
    carbon
    carbons
    cobra
    crab
    crayon
    narc
    
    예상 출력
    6