Favorite Subsequence

4.6

16 votes
Dynamic Programming, Easy, String Manipulation, approved
Problem

You are given a String S of length N.

Now, a good subsequence is one that can be represented in the form aibjck, where i1, j1 and k1. For example ,if i=2,j=1,k=3, it represents the string aabccc. In short, a good subsequence is a subsequence that first consist of i a characters, followed by j b characters, followed by k c characters, where i1, j1 and k1

Now, you need to find the number of good subsequences of String S. As the number of such subsequences could be rather large, print the answer Modulo 109+7.

Note1: Two subsequences are considered different if the set of array indexes picked for the 2 subsequences are different.

Input Format:

The first and only line of input contains the S

Output Format :

Print the required answer on a single line.

Constraints:

1|S|105

Time Limit: 1
Memory Limit: 256
Source Limit:
Explanation

Valid sub sequences are(1-based indexing):

{1,2,3}

{1,2,6}

{1,5,6}

{4,5,6}

{1,2,5,6}

{1,4,5,6}

{1,2,3,6}

Editor Image

?