Два бита вот откуда
Возьмем месяц, у нас в месяце максимум 31 день.
Номер каждого дня мы можем закодировать числом бит.
первый день 1
второй день 11
третий день 111
четвёртый день 1111
и так далее
Для месяцев, аналогично но счёт идет от текущего месяца (N).
N-ный месяц 1
N+1 месяц 11
и так далее
Отсюда минимальное будет если у него первого числа N-ого месяца итого
1 бит перешлёт Иван -> Пафнутию и 1бит Пафнутий -> Ивану
Итого 2 бита.
Что касается 9 бит, то видимо составитель не учёл что информацию можно кодировать по разному.
И видимо решил её кодировать в двоичном формате как показано ниже.
1 день 00000
2 день 00001
3 день 00010
и так далее
Откуда имеем для кодирования тридцати одного дня надо 5 бит
.
Что касается месяцев. Для кодирования 12 месяцев в таком формате надо 4 бита.
Итого 4+5=9
У нас в задаче на перёд известен текущий месяц, то тут можно сократить число бит, если вычесть
К примеру если начальный N=5 то остаётся всего 12-5=7 месяцев, а их уже можно кодировать 3 битами.
Напоминаю правильный ответ будет 2 бита.