Полагодження ланцюжка#11060

Полагодження ланцюжка

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

У Сови був ланцюжок, що складався з ланок, пронумерованих від до . Але поки ланцюжок лежав у комоді, він весь заплутався. Сова хоче виправити ситуацію.

Кожна ланка являє собою кільце з дроту. Кожні дві ланки або переплетені одна з одною, або ні. Сова звернулася за допомогою до Піна. Він може виконувати дві дії:

Наприкінці всі ланки повинні бути запаяними.

Сова хоче, щоб ланка номер була з'єднана з ланкою номер , з , ..., n - 1 з . Іншими словами, щоб були з'єднані ланки з номерами та i + 1 для всіх i \in [1, n - 1]. І ніякі інші пари ланок не повинні бути з'єднані.

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

Вхідні дані

У першому рядку задано два цілих числа і m~(1 \le n \le 40, 0 \le m \le n \cdot (n - 1) / 2) — кількість ланок і кількість пар спочатку з'єднаних ланок.

У наступних рядках дано по два цілі числа a_i і b_i~(1 \le a_i, b_i \le n, a_i \ne b_i) — номери з'єднаних ланок.

Гарантується, що у вхідних даних кожна неупорядкована пара ланок зустрічається максимум один раз.

Вихідні дані

Виведіть одне ціле число — мінімальну кількість дій, які повинен виконати Пін, аби полагодити ланцюжок.

Приклади

У першому прикладі Пін може розкувати ланку номер . Тоді вона від'єднається від обох інших ланок. А потім запаяти ланку номер назад, з'єднавши її тільки з ланкою номер .

У другому прикладі Пін може розкувати ланку номер , потім запаяти її назад, з'єднавши з ланками і . А потім розкувати ланку номер і запаяти назад, з'єднавши з ланками і .

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Приклад 3

Loading
Loading