eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Починка цепочки

Починка цепочки

У Совуньи была цепочка, состоявшая из n звеньев, пронумерованных от 1 до n. Но пока цепочка валялась в комоде, она вся запуталась. Совунья хочет исправить ситуацию.

Каждое звено представляет из себя кольцо из проволоки. Каждые два звена либо сцеплены друг с другом, либо нет. Совунья обратилась за помощью к Пину. Он может делать два действия:

  • Расковать одно из звеньев. При этом, оно перестает быть замкнутым кольцом, и поэтому его можно отсоединить от всех остальных звеньев.
  • Обратно запаять раскованное ранее звено. При этом, оно обратно становится замкнутым кольцом. Пин может выбрать произвольное множество других звеньев, продеть через них текущее звено перед запайкой, и таким образом сцепить это звено с каждым звеном из выбранного множества.

В конце все звенья должны быть запаянными.

Совунья хочет, чтобы звено номер 1 было сцепленно со звеном номер 2, 2 с 3, . . . , n - 1 с n. Иными словами, чтобы были сцеплены звенья с номерами i и i + 1 для всех i ∈ [1, n - 1]. А никакие другие пары звеньев не должны быть сцеплены.

Помогите Пину определить минимальное количество действий, которые ему придется выполнить, чтобы починить цепочку.

Входные данные

В первой строке даны два целых числа n и m (1n40, 0mn * (n - 1) / 2) - количество звеньев и количество пар изначально сцепленных звеньев.

В следующих m строках дано по два целых числа ai и bi (1ai, bin, aibi) - номера сцепленных звеньев.

Гарантируется, что во входных данных каждая неупорядоченная пара звеньев встречается мак- симум один раз.

Выходные данные

Выведите одно целое число - минимальное количество действий, которые должен сделать Пин, чтобы починить цепочку.

Замечание

В первом примере Пин может расковать звено номер 3. Тогда оно отсоединится от обоих оставшихся звеньев. А затем, запаять звено номер 3 обратно, сцепив его только со звеном номер 2.

Во втором примере Пин может расковать звено номер 2, затем запаять его обратно соединив со звеньями 1 и 3. А затем, расковать звено номер 4 и запаять обратно, соединив со звеньями 3 и 5.

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
3 3
1 2
2 3
3 1
Выходные данные #1
2
Входные данные #2
5 0
Выходные данные #2
4
Входные данные #3
1 0
Выходные данные #3
0
Источник 2020 Цикл Интернет-олимпиад для школьников, первая командная олимпиада, 18 октября, Задача D