만드는 중입니다

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

반복되는 노래

면접 대비

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

요약
가사의 단어 n개가 주어질 때, 서로 다른 인덱스 조합으로 같은 단어 순서를 만들 수 있는 가장 긴 부분 수열의 길이를 구합니다.
난이도

보통10점 중 5점

유형
해시맵, 구현, 그리디
정답자
아직 제출이 없습니다

문제

동생이 꽤 반복적인 노래에 푹 빠져 있습니다. 동생은 이 노래가 반복적이지 않다고 주장합니다. 그래서 여러분은 전체 가사 안에서 동생이 확실하게 식별할 수 없는 부분수열 가운데 단어 수가 가장 많은 것을 찾아서 주장을 증명하기로 합니다.

좀 더 정확히 말하면, 단어가 nn개인 노래의 길이 ℓ\ell짜리 부분수열은 단어의 위치를 나타내는 정수 ℓ\ell개의 튜플 1≤s1<s2<⋯<sℓ≤n1 \leq s_1 < s_2 < \cdots < s_\ell \leq n입니다. 부분수열 ss와 다른 길이 ℓ\ell의 부분수열 1≤t1<t2<⋯<tℓ≤n1 \leq t_1 < t_2 < \cdots < t_\ell \leq n (어느 한 인덱스 ii에서라도 si≠tis_i \neq t_i) 가 있어서, 노래의 s1s_1번째 단어가 t1t_1번째 단어와 같고, s2s_2번째 단어가 t2t_2번째 단어와 같고, 이런 식으로 모든 ii에 대해 같다면, 그 부분수열은 식별 불가능합니다.

입력

첫 줄에는 가사의 단어 수 nn (1≤n≤1051 \leq n \leq 10^5)이 주어집니다.

이어지는 nn개의 줄에는 가사의 단어가 순서대로 한 줄에 하나씩 주어집니다. 각 단어는 대문자 A부터 Z까지, 소문자 a부터 z까지의 영문자로 최대 20글자입니다. 같은 단어가 여러 줄에 나올 수 있습니다. 대소문자까지 정확히 일치하지 않으면 서로 다른 단어입니다.

출력

식별 불가능한 노래 부분수열 가운데 가장 긴 것의 단어 수 ℓ\ell을 한 정수로 출력합니다. 노래의 모든 부분수열이 식별 가능하면 00을 출력합니다. 단어가 같은지 판단할 때는 대소문자를 구분합니다.

예제2

  1. 예제 1

    입력
    10
    bow
    bow
    chick
    chicka
    chicka
    bow
    bow
    chick
    chicka
    chicka
    
    예상 출력
    9
    
  2. 예제 2

    입력
    31
    head
    shoulders
    knees
    and
    toes
    knees
    and
    toes
    head
    shoulders
    knees
    and
    toes
    knees
    and
    toes
    eyes
    and
    ears
    and
    mouth
    and
    nose
    head
    shoulders
    knees
    and
    toes
    knees
    and
    toes
    
    예상 출력
    29