편집 단계 사다리

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

요약
사전순으로 정렬된 단어 목록이 주어질 때, 연속한 두 단어가 한 글자 추가, 삭제, 변경으로 이어지면서 사전 순서를 따르는 가장 긴 수열의 길이를 구한다.
난이도

보통10점 중 7점

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

문제

편집 단계(edit step)란 한 단어 xx를 다른 단어 yy로 바꾸는 변환을 말한다. 단, xx와 yy는 모두 사전에 들어 있는 단어여야 하며, xx에 글자 하나를 추가하거나, 글자 하나를 삭제하거나, 글자 하나를 다른 글자로 바꾸어 yy를 만들 수 있어야 한다. 예를 들어 dig에서 dog으로, 또는 dog에서 do로 바꾸는 것은 모두 편집 단계이다.

편집 단계 사다리(edit step ladder)는 사전순으로 정렬된 단어들의 수열 w1,w2,…,wnw_1, w_2, \ldots, w_n으로, 1≤i≤n−11 \le i \le n-1인 모든 ii에 대해 wiw_i에서 wi+1w_{i+1}로의 변환이 편집 단계인 것을 말한다.

주어진 사전에 대해 가장 긴 편집 단계 사다리의 길이를 구하여라.

입력

입력은 사전이다. 사전순으로 정렬된 소문자 단어들의 집합이 한 줄에 하나씩 주어진다. 각 단어의 길이는 16글자를 넘지 않으며, 사전에 들어 있는 단어는 최대 25000개이다.

출력

가장 긴 편집 단계 사다리에 포함된 단어의 개수를 정수 하나로 출력한다.

예제1

  1. 예제 1

    입력
    cat
    dig
    dog
    fig
    fin
    fine
    fog
    log
    wine
    
    예상 출력
    5