This page is still under construction.

Parts of this page are still being built. What you see may change.

Repeated Substring Count

Time limit5sMemory limit256 MB

Summary
Count the distinct substrings that occur at least twice in each string of up to 100000 letters.
Level

Medium7 of 10

Topics
String matching, String
Solved
No attempts yet

Problem

문자열 분석은 DNA와 단백질 분자의 연구를 진행하기 위해 생물학과 화학 분야에서 종종 사용된다. 문자열 분석을 하는 데 있어, 긴 문자열에서 얼마나 많은 부분 문자열이 (적어도 두 번) 반복되는지 찾아내는 것이 중요한 문제이다.

이 문제에서 최대 100 000개의 알파벳 문자열이 주어지면, 여러분은 그 문자열 중 모든 반복되는 부분 문자열의 개수를 찾아야한다. 이때, 두 번 이상 등장하는 모든 유일한 부분 문자열을 세어야 한다. 예를 들어, 주어지는 문자열이 "aabaab"이면 반복되는 부분 문자열은 총 5개가 있다 : "a", "aa", "aab", "ab", "b". 또, 주어지는 문자열이 "aaaaa"이면 반복되는 부분 문자열은 총 4개가 있다 : "a", "aa", "aaa", "aaaa". 반복되는 부분 문자열은 겹칠 수도 있다는 것에 유의하도록 하자 (두 번째 예시의 "aaaa").

Input

첫 줄에는 테스트 케이스의 수 T가 정수로 주어진다. 입력은 최대 10개의 테스트 케이스로 이루어진다.

각 테스트 케이스마다 첫 번째 줄에 알파벳으로만 이루어진 문자열이 주어진다. 문자열의 길이는 최대 100 000이다.

Output

각 테스트 케이스마다, 주어지는 문자열에서 반복되는 모든 유일한 부분 문자열의 개수를 출력한다. 이때, 답은 부호있는 32비트 정수형으로 항상 표현할 수 있다.

Examples4

  1. Example 1

    Input
    3
    aabaab
    aaaaa
    AaAaA
    
    Expected output
    5
    4
    5
    
  2. Example 2

    Input
    1
    ababab
    
    Expected output
    7
    
  3. Example 3

    Input
    1
    abcabc
    
    Expected output
    6
    
  4. Example 4

    Input
    1
    mississippi
    
    Expected output
    9