Настер і паліндромічні зрушення#12350

Настер і паліндромічні зрушення

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

Настер дає вам рядок , що складається з малих англійських літер.

Вам дозволено виконувати два типи операцій будь-яку кількість разів:

Ваше завдання полягає в тому, щоб визначити, чи можливо зробити рядок паліндромом, виконуючи якусь послідовність цих операцій.

Якщо це можливо, виведіть мінімальну кількість зрушень, що потрібні. Інакше виведіть .

УВАГА !! : ЦЕ ВАЖЛИВО, ВИКОРИСТОВУЙТЕ mod 67676767

Рядок називається паліндромом, якщо він читається однаково зліва направо і справа наліво. Наприклад, та є паліндромами, тоді як не є.

Оскільки Настер не впевнений у операціях з рядками, він попросив вас допомогти йому швидко вирішити цю проблему.

Вхідні дані

Перший рядок містить одне ціле число (1 \le t \le 10^4) — кількість тестових випадків.

Перший рядок кожного тестового випадку містить одне ціле число (1 \le n \le 4 \cdot 10^5) — довжина рядка.

Другий рядок містить рядок довжиною , що складається з малих англійських літер.

Гарантується, що сума всіх у всіх тестових випадках не перевищує 4 \cdot 10^5.

Вихідні дані

Для кожного тестового випадку виведіть одне ціле число — мінімальну кількість зрушень, потрібну для того, щоб рядок став паліндромом, або , якщо це неможливо.

Приклади

Приклад 1

Loading
Loading

Примітка

У першому тестовому випадку, n=5, s=\text{``ababa''}

  • Рядок вже є паліндромом: однаково читається зліва направо і справа наліво.

  • Зрушення не потрібні.

  • Відповідь:

У третьому тестовому випадку, n=7, s=\text{``abbaccc''}

  • Оригінал: (не паліндром)

  • Після зрушення вліво: (не паліндром)

  • Після зрушень вліво: (паліндром: )

  • Перевірка: однаково читається зліва направо і справа наліво.

  • Мінімально потрібно зрушення.

  • Відповідь:

Оцінювання

  1. Подзадача ( очок) : (1 \le \sum n \le 100)

  2. Подзадача ( очок) : (1 \le \sum n \le 5000)

  3. Подзадача ( очок) : (1 \le \sum n \le 5 \cdot 10^4)

  4. Подзадача ( очок) : Без додаткових обмежень.