새로운 언어를 만들었다. 이 언어에서 '단어'는 아래 조건을 모두 만족하는 비어있지 않은 문자열이다.
- 영어 소문자 ('a'-'z'), 마침표 ('.'), 붙임표 ('-'), 그리고 별표 ('*') 로만 구성되어 있는 비어있지 않은 문자열
- 문자열에 포함된 연속한 세 글자가 모두 특수문자인 경우가 없는 문자열 (특수문자는 '.', '-', '*')
- 문자열에 포함된 연속한 세 글자가 모두 모음인 경우가 없는 문자열 (모음은 'a', 'e', 'i', 'o', 'u')
- 문자열에 포함된 연속한 세 글자가 자음/모음/특수문자 관계없이 모두 동일한 경우가 없는 문자열
- 첫 글자가 특수문자가 아니고 마지막 글자도 특수문자가 아닌 문자열
예를 들어, 길이가 1인 단어는 총 26가지가 있다. 영어 소문자 한 글자는 각각이 단어이다. 추가로, "boj", "i.am.coder", and "hello*world" 모두 단어이다. 하지만, "zzz", ".boj", "mioum", and "hello-.-world" 네 문자열은 단어가 아니다.
양수 a, b가 주어졌을 때, 길이가 a이상 b이하인 단어의 개수를 구하는 프로그램을 작성하시오. 단, 수가 매우 클 수 있으므로 이 수를 (109 + 7)로 나눈 나머지를 출력한다.