Олимпиадный тренинг

Задача . Searching for Soulmates


Задача

Темы:
Каждая из коров Фермера Джона хочет найти себе родственную душу. Каждая корова описывается целым числом \(p_i\) (\(1 \leq p_i \leq 10^{18}\)). Две коровы с одинаковыми \(p_i\) называются "родственными душами". Корова может изменить своё \(p_i\) посредством «операции изменения» умножением на \(2\), делением на \(2\) (если \(p_i\) чётное), или прибавлением \(1\).

ФД изначально объединил коровы в пары произвольным образом. А теперь хочет узнать, сколько операций он должен сделать, чтобы превратить каждую пару в "родственные души". Для каждой пары определите минимальное количество операций которое нужно сделать над первой коровой, чтобы сделать её "родственной душой" со второй коровой.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(N\) (\(1\le N\le 10\)), количество пар коров. Каждая из оставшихся \(N\) строк описывает пару коров как два целых числа - описывающих \(p_i\) этих коров. Первое число описывает персональность коровы \(p_i\), которая должна быть изменена, чтобы стать равной второму числу.

ФОРМАТ ВЫВОДА (на экран / stdout):

Напишите \(N\) строк в вывода. Для каждой пары выведите минимальное количество операций которое требуется, чтобы превратить первое число во второе с помощью описанных операций.


Примеры
Входные данныеВыходные данные
1 6
31 13
12 8
25 6
10 24
1 1
997 120
8
3
8
3
0
20

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя