#CCC20S3. Searching for Strings

Searching for Strings

You're given a string N, called the needle, and a string H, called the haystack, both of which contain only lowercase letters az.

Write a program to count the number of distinct permutations of N which appear as a substring of H at least once. Note that N can have anywhere between 1 and |N|! distinct permutations in total – for example, the string aab has 3 distinct permutations (aab, aba, and baa).

Input Specification

The first line contains N (1≤|N|≤200000), the needle string.

The second line contains H (1≤|H|≤200000), the haystack string.

For 3 of the 15 available marks, |N|≤8 and |H|≤200.

For an additional 2 of the 15 available marks, |N|≤200 and |H|≤200.

For an additional 2 of the 15 available marks, |N|≤2000 and |H|≤2000.

Because the original test data were weak, an additional subtask worth 5 marks has been added.

Output Specification

Output consists of one integer, the number of distinct permutations of N which appear as a substring of H.

Sample Input

aab
abacabaa

Output for Sample Input

2

Explanation of Output for Sample Input

The permutations aba and baa each appear as substrings of H (the former appears twice), while the permutation aab does not appear.