atcoder#ABC214F. [ABC214F] Substrings

[ABC214F] Substrings

Score : 500500 points

Problem Statement

Given is a string SS. From this string, Takahashi will make a new string TT as follows.

  • First, mark one or more characters in SS. Here, no two marked characters should be adjacent.
  • Next, delete all unmarked characters.
  • Finally, let TT be the remaining string. Here, it is forbidden to change the order of the characters.

How many strings are there that can be obtained as TT? Find the count modulo (109+7)(10^9 + 7).

Constraints

  • SS is a string of length between 11 and 2×1052 \times 10^5 (inclusive) consisting of lowercase English letters.

Input

Input is given from Standard Input in the following format:

SS

Output

Print the number of different strings that can be obtained as TT, modulo (109+7)(10^9 + 7).

abc
4

There are four strings that can be obtained as TT: a, b, c, and ac.

Marking the first character of SS yields a;

marking the second character of SS yields b;

marking the third character of SS yields c;

marking the first and third characters of SS yields ac.

Note that it is forbidden to, for example, mark both the first and second characters.

aa
1

There is just one string that can be obtained as TT, which is a. Note that marking different positions may result in the same string.

acba
6

There are six strings that can be obtained as TT: a, b, c, aa, ab, and ca.

chokudai
54