Задача A - Кубик Рубика 2D

Ліміт часу: 1 с
Ліміт пам'яті: 64 МБ
Бали за задачу: 20

   Головоломка являє собою квадрат, що має три клітинки в ширину та три клітинки у висоту, всього дев'ять клітинок. Кожна клітинка пофарбована в один з трьох кольорів: три клітинки в колір 1, три - в колір 2, та три - в колір 3. Головоломка вважається вирішеною, якщо клітинки кожного з трьох рядків мають однаковий колір, або ж клітинки кожного з стовпців мають однаковий колір. Розташування кольорових клітинок можна змінювати за допомогою циклічних зсувів будь-якого рядка або стовпця. Циклічний зсув зміщує всі клітинки одного рядка або стовпця на одну позицію вправо, вліво, вверх чи вниз відповідно, остання ж клітинка переміщується в першу позицію.
Приклад вирішення головоломки в три кроки:
231    123    123    123
112 -> 112 -> 312 -> 123
323    323    123    123
Потрібно визначити за яку найменшу кількість кроків можна вирішити головоломку починаючи з заданого стану.

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

Приклад вхідних та вихідних даних.
Приклад вхідних даних: 
Приклад вихідних даних:
231
112
323

3



Задача B - Авіапошта

Ліміт часу: 5 с
Ліміт пам'яті: 64 МБ
Бали за задачу: 20

   У відділенні військової пошти є N посилок, які потрібно доставити на окуповану територію. 0<=N<=1000. Кожна посилка має бути доставлена в задані координати x, y. x, y - цілі числа, -100<=x, y<=100. В поштовому відділенні є літак, який може пролетіти над територією і скинути посилки в потрібних координатах. Але, у зв'язку з небезпекою такої операції, він може пролетіти лише один раз і лише по прямій лінії. Яку найбільшу кількість посилок зможе доставити літак?

Вхідні дані:
   В першому рядку вхідного потоку міститься число N. В наступних N рядках вхідного потоку міститься по парі чисел, які розділені пропусками, - координати x та y доставки відповідної посилки.
Вихідні дані:
   В перший рядок вихідного потоку вивести максимальну кількість посилок, яка може бути доставлена за даних умов.

Приклад вхідних та вихідних даних.
Приклад вхідних даних: 
Приклад вихідних даних:
4
0 0
1 1
2 2
4 1

3





Задача C -
Родичі

Ліміт часу: 1 с
Ліміт пам'яті: 64 МБ
Бали за задачу: 20

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

Вхідні дані:
   В першому рядку вхідного потоку міститься єдине слово - ім'я особи. В другому рядку вхідного потоку міститься єдине число n - кількість описів сімей. В кожному з наступних n рядків міститься опис сім'ї. Цей опис складається з послідовності імен розділених пропусками. Перші два імені в рядку - це імена батьків, всі інші - імена їхніх дітей. В кожному рядку міститься не менше двох імен. Імена складаються лише з великих та малих латинських літер. Всі особи мають різні імена. Кожна особа зустрічається в описах сімей не більше одного разу в якості дитини, та не більше одного разу в якості батьків. Загальна кількість осіб згаданих в описі не перевищує 100.
Вихідні дані:
    В перший рядок вихідного потоку виведіть єдине число - кількість двоюрідних братів та сестер вказаної особи.

Приклад вхідних та вихідних даних.
Приклад вхідних даних: 
Приклад вихідних даних:
Henry
3
Cameron Claire Sophie Hunter
Connor Sophie Adrian Henry
Hunter Arianna Peyton Harper

2