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

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

순열들의 최장 공통 부분 수열

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

요약
알파벳 대문자 앞 k개의 순열 n개가 주어질 때, 모든 문자열의 공통 부분 수열 중 가장 긴 것의 길이를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 조합론, 그리디
정답자
아직 제출이 없습니다

문제

알파벳 대문자 중 처음 kk개 문자의 순열인 문자열 nn개가 주어진다.

문자열 tt에서 몇 개의 문자를 지워(0개도 가능) 문자열 ss를 얻을 수 있으면 ss는 tt의 부분 수열이다.

nn개 문자열 모두의 최장 공통 부분 수열의 길이를 구하시오.

입력

첫째 줄에 정수 nn (1≤n≤1051 \le n \le 10^5)과 kk (1≤k≤261 \le k \le 26)가 주어진다. nn은 문자열의 개수이고, 문자열은 모두 알파벳 대문자 중 처음 kk개의 순열이다.

다음 nn개 줄에 각각 문자열 tt가 하나씩 주어진다. 모든 tt는 알파벳 대문자 중 처음 kk개 문자를 각각 정확히 한 번씩 포함한다.

출력

nn개 문자열 모두에 나타나는 최장 부분 수열의 길이를 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    2 3
    BAC
    ABC
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 8
    HGBDFCAE
    ADBGHFCE
    HCFGBDAE
    
    예상 출력
    3
    
  3. 예제 3

    입력
    6 8
    AHFBGDCE
    FABGCEHD
    AHDGFBCE
    DABHGCFE
    ABCHFEDG
    DGABHFCE
    
    예상 출력
    4