Мова блогера#6582

Мова блогера

1 секунда
64 мегабайти
Дуже складна

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

Бренда пише без пробілів та розділових знаків, а також вільно і незвично використовує великі та малі літери. Наприклад, один з її постів виглядає як "PrOgRAMmINgiSgrEAt". Бенджаміну важко розпізнати слова "programming", "is" та "great", коли вони написані таким чином.

Щоб покращити своє розуміння, Бенджамін вирішив зробити наступне: спочатку він вибере певний рядок та блог-пост, який його цікавить; потім він вибере суміжний фрагмент посту і шукатиме у цьому фрагменті, не враховуючи регістр; для кожного входження у фрагмент він підрахує кількість невідповідностей регістру, і нарешті отримає максимальне значення серед усіх цих значень. Наприклад, якщо Бенджамін вибере "GR" як і потім вибере фрагмент "PrOgRAM", він знайде одне входження "gR", для якого кількість невідповідностей регістру дорівнює . Для того ж фрагмента, якщо вибрати "r" як , він знайде два входження, "r" з невідповідностями і "R" з невідповідністю, тому максимальна кількість невідповідностей буде .

Щоб ускладнити ситуацію, Бренда додала в блог скрипт, який після операції з вибором фрагмента змінює регістр усіх вибраних літер. Це означає, що після вибору "PrOgRAM" і виконання описаних вище дій, зразковий пост буде виглядати як "pRoGrammINgiSgrEAt". Якщо Бенджамін вибере "ammINgi" як другий фрагмент, після обчислення свого результату пост буде виглядати як "pRoGrAMMinGISgrEAt", накопичуючи обидві зміни регістру.

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

Вхідні дані

Перша строка містить ціле число (1 \leq n \leq 10^5) і непорожній рядок довжиною не більше літер, що представляють відповідно кількість виборів фрагментів та рядок для пошуку. Друга строка містить непорожній рядок довжиною не більше 10^5 літер, що вказує на оригінальний текст блог-посту. Позиції посту нумеруються послідовними цілими числами зліва направо, де — це крайня ліва позиція, а — крайня права позиція. Кожна з наступних строк описує вибір фрагмента двома цілими числами та (1 \leq l \leq r \leq |P|), що вказують, що фрагмент починається з позиції і закінчується позицією , включно.

Вихідні дані

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

Приклади

Приклад 1

Loading
Loading