11586. Підрядки
Дано рядок \(S\). З цього рядка Степан створить новий рядок \(T\) наступним чином.
Спочатку позначте один або кілька символів у \(S\). Тут жодні два позначені символи не повинні бути сусідніми.
Далі видаліть усі непозначені символи.
Нарешті, нехай \(T\) буде рядком, що залишився. Тут заборонено змінювати порядок символів.
Скільки існує рядків, які можна отримати як \(T\)? Знайдіть кількість за модулем (\(10^9 + 7\)).
Формат вхідних даних
Вхідний потік містить рядок \(S\) (\(1 \le |S| \le 2 \times 10^5\)), який складається з малих англійських літер.
Формат вихідних даних
У вихідний потік виведіть шукану кількісь рядків.
Примітка
До прикладу 1:
Є чотири рядки, які можна отримати як \(T\): 'a', 'b', 'c' і 'ac'.
Позначення першого символу \(S\) дає 'a';
позначення другого символу \(S\) дає 'b';
позначення третього символу \(S\) дає 'c';
позначення першого і третього символів \(S\) дає 'ac'.
Зверніть увагу, що заборонено, наприклад, позначати перший і другий символи.
Приклад вхідних даних
abc
Приклад вихідних даних
4
Приклад вхідних даних
aa
Приклад вихідних даних
1
Приклад вхідних даних
acba
Приклад вихідних даних
6
Коментарі