N, k= [int(i) for i in input().split()] b = 1
 list = [1]
 while len(list) < k:
 if b != n:
 list.extend(list)
 list.insert(len(list) // 2, b+1)
 b = b + 1
 k = k - 1
 print(list[k])
 как можно максимально сократить текст
 ограничение по времени на тест1 секунда
 ограничение по памяти на тест256 мегабайт
 вводстандартный ввод
 выводстандартный вывод
 Хлоя, как и Владик, — спортивный программист. У нее не было проблем с тем, чтобы добраться до олимпиады, но на самой олимпиаде ей понадобилась ваша ! У нее не получается решить следующую задачу.
 Рассмотрим следующий алгоритм генерации последовательностей целых чисел. Первоначально имеется последовательность из одного элемента, равного 1. Далее производится (n - 1) шаг. На каждом шаге берется последовательность, полученная на предыдущем шаге, приписывается сама к себе в конец, а в середину вставляется символ с минимальным положительным, не использованным ранее, числом. Например, после первого шага получится последовательность [1, 2, 1], а после второго — [1, 2, 1, 3, 1, 2, 1].
 Необходимо вывести значение элемента, стоящего на k-й позиции (элементы пронумерованы с 1) в итоговой последовательности, т. е. после (n - 1) шага Хлое решить задачу!
 Входные данные
 В единственной строке содержатся два целых числа n и k (1 ≤ n ≤ 50, 1 ≤ k ≤ 2n - 1).
 Выходные данные
 Выведите одно целое число — число, стоящее в итоговой последовательности на позиции k.
 Примеры
 входные данныеСкопировать
 3 2
 выходные данныеСкопировать
 2
 входные данныеСкопировать
 4 8
 выходные данныеСкопировать
 4
 Примечание
 В первом примере итоговая последовательность — [1, 2, 1, 3, 1, 2, 1]. Число, стоящее на второй позиции, равно 2.
 Во втором примере итоговая последовательность — [1, 2, 1, 3, 1, 2, 1, 4, 1, 2, 1, 3, 1, 2, 1]. Число на восьмой позиции — 4.