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

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

Suffi⊗\otimes

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

요약
길이 50 이하인 문자열 N개의 모든 접미사 집합을 순서대로 XOR한 뒤 남는 서로 다른 문자열의 개수를 센다.
난이도

보통10점 중 4점

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

문제

이 문제는 모든 언어에 대해서 시간 제한과 메모리 제한이 동일하다. 상단의 시간 제한 및 메모리 제한 란을 참조하라.

문자열에 약한 비행씨는 열심히 문자열 알고리즘을 바라보고 있다. LCS, KMP, Rabin-Karp, Aho-Corasick...

Suffix array를 바라보다 머리가 터져버린 비행씨는 머리를 식힐 겸 입력으로 주어진 문자열들의 접미사를 정리하려고 한다. 다만 그냥 정리하면 재미가 없으니, 문자열의 접미사 집합을 XOR하려고 한다.

문자열 SS의 접미사 집합 suffix\[S]\text{suffix}\[S]은 SS의 모든 접미사를 원소로 가지는 집합이라 정의하고, 두 집합 A,BA, B의 XOR인 A⊗BA\otimes B는 다음과 같이 정의한다.

A⊗B=x∣x∈A∪B and x∉A∩BA\otimes B=\\{x\mid x\in A\cup B\text{ and }x\not\in A\cap B\\}

비행씨를 대신하여 주어진 문자열 S_1,S_2,⋯ ,S_NS\_1,S\_2,\cdots,S\_N의 접미사 집합을 전부 XOR한 집합 (⋯((suffix\[S_1]⊗suffix\[S_2])⊗suffix\[S_3])⋯⊗suffix\[S_N])(\cdots((\text{suffix}\[S\_1]\otimes\text{suffix}\[S\_2])\otimes\text{suffix}\[S\_3])\cdots\otimes\text{suffix}\[S\_N])의 원소의 개수를 구하는 프로그램을 작성해 주자.

입력

첫째 줄에 정수 NN이 주어진다. (1≤N≤1,000)(1\le N\le 1\\,000)

둘째 줄부터 NN개의 줄에 한 줄에 하나씩 영어 소문자로만 이루어진 문자열 S_iS\_i가 주어진다. (1≤∣S_i∣≤50)(1\le |S\_i|\le 50)

출력

(⋯((suffix\[S_1]⊗suffix\[S_2])⊗suffix\[S_3])⋯⊗suffix\[S_N])(\cdots((\text{suffix}\[S\_1]\otimes\text{suffix}\[S\_2])\otimes\text{suffix}\[S\_3])\cdots\otimes\text{suffix}\[S\_N])의 원소의 개수를 출력한다.

공집합의 원소의 개수는 00이다.

예제1

  1. 예제 1

    입력
    3
    a
    aba
    ababa
    
    예상 출력
    3