Дійна корова#6385

Дійна корова

1 секунда
64 мегабайти
Середня

Роки до того, як Candy Crush стала надзвичайно популярною грою, яка могла б привести розробника Saga до багатомільярдного IPO, існувала онлайн-гра під назвою Cash Cow, що досі є частиною платформи Webkinz.

Ця однокористувацька гра має дошку розміром рядків на стовпців, як показано на Рисунку 1. Рядки пронумеровані від до , починаючи знизу, а стовпці — від до , починаючи зліва. Кожна клітинка сітки може містити кольорове коло або бути порожньою. (Ми використовуємо великі літери для позначення різних кольорів, наприклад, B=синій, R=червоний і Y=жовтий.) На кожному ході гравець натискає на коло. Комп'ютер визначає найбільший "кластер", до якого належить це коло, де кластер визначається як початкове коло, будь-які його сусіди по горизонталі та вертикалі з відповідним кольором, сусіди цих кіл з відповідними кольорами і так далі. Наприклад, якщо користувач натисне на синє коло в клітинці () на Рисунку 1, його кластер складається з тих клітинок, що показані з порожніми колами на Рисунку 2.

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

  1. Кола падають вертикально, щоб заповнити будь-які порожні місця в своєму стовпці.

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

Наприклад, Рисунок 3 показує дошку після того, як кластер з Рисунка 2 був видалений після натискання на ().

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

Рисунок 4: Обробка натискання на клітинку .

Рисунок 5: Обробка натискання на клітинку .

Вхідні дані

Вхідні дані складатимуться з декількох ігор, кожна з яких грається на новій дошці. Для кожної гри вхідні дані починаються з числа , яке позначає кількість ходів, які гравець буде робити, з 1 \le T \le 20. Після цього буде початкова конфігурація дошки, яка завжди має рядків і стовпців у кожному рядку, з великими літерами, що використовуються для позначення різних кольорів. Ніколи не буде порожніх клітинок у початковій дошці. Після представлення початкової дошки буде додаткових рядків вхідних даних, кожен з яких позначає клітинку сітки; ми покладаємося на систему координат, ілюстровану на наведених вище рисунках, з малою літерою, від до , що позначає стовпець, і числом від до , що позначає рядок. Ми зазначаємо, що якщо гравець натискає на клітинку сітки, в якій наразі немає жодного кола, цей хід просто втрачається.

Кінець всього вхідного файлу буде позначений рядком з числом .

Вихідні дані

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

Приклади

Приклад 1

Loading
Loading