[BOJ 34695] 이름 짓기

View as PDF

Submit solution

Points: 3
Time limit: 1.5s
Memory limit: 1G

Problem type
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

오늘도 평화로운 대곽 나라에서는 다음과 같은 규칙으로 이름을 짓는다.</p>

  • 이름은 알파벳 소문자로만 이루어진다.
  • 이름의 글자 수는 $2$자 이상 $N$자 이하여야 한다.
  • 이름의 모든 연속된 $2$자는 허용된 조합이어야 한다.

예를 들어, 'ac', 'bd', 'cd'가 허용된 조합이라고 하자. 'acd'는 'ac' 와 'cd'가 모두 허용된 조합 이므로 사용 가능한 이름이다. 하지만 'abd'는 'ab'가 허용된 조합이 아니기 때문에 사용할 수 없다.

허용된 조합이 주어질 때, 규칙을 준수하면서 만들 수 있는 이름의 총 개수를 구해 보자.

입력 형식

첫째 줄에 허용된 조합의 수 $K$, 이름의 최대 글자 수 $N$이 공백으로 구분되어 주어진다. $(1 \leq K \leq 676$; $2 \leq N \leq 100\,000)$</p>

다음 $K$개 줄에 걸쳐 각각 허용된 조합을 나타내는 문자열 $s$가 주어진다. $s$는 알파벳 소문자 $2$자로 이루어져 있으며, $K$개의 문자열은 서로 다르다.

출력 형식

만들 수 있는 이름의 총 개수를 $10^9 + 7$로 나눈 나머지를 출력한다.

예제 입력

3 4
ac
cd
bd

예제 출력

4

Comments

There are no comments at the moment.