Паліндромний рядок (Hard)#5940

Паліндромний рядок (Hard)

1 секунда
256 мегабайтів
Середня

У Ксюші є рядок . Вона вирішила пограти з ним, переставляючи літери в різних порядках.

Тепер Ксюші цікаво дізнатися, скільки різних паліндромів вона може скласти, переставляючи літери рядка .

Паліндром — це рядок, який читається однаково зліва направо і справа наліво. Наприклад, рядок "ded" є паліндромом.

Вхідні дані

У першому рядку задано рядок (1 \leq |s| \leq 10^6). Рядок складається виключно з малих латинських літер.

Вихідні дані

Виведіть одне ціле число — кількість різних паліндромів, які Ксюша може отримати, переставляючи літери рядка . Оскільки відповідь може бути дуже великою, виведіть її за модулем (10^9).

Приклади

Приклад 1

Loading
Loading