Сначала определим, на какое время вообще можно записатья на прием. 2 часа дня - это 14 часов. Между 8 и 14 часами с промежутком в полчаса есть 13 вариантов. Считать просто: надо от 14 отнять 8, результат разделить пополам, отбросив остаток, если он есть и к результату добавить единицу. Но врач в 14 часов уже не принимает поэтому вариантов будет не 13, а 12, последний - это 13.30.
На какое бы (из возможных) время Петя не записался, его выбор - это один из 12 возможных. 1/12.
"Переворачиваем" дробь, получаем 12. Теперь нужно подобрать такую степень двойки, чтобы получить 12. Два в третьей степени - это 8, два в четвертой - 16. Значит, количество информации находится между 3 и 4 битами. Если надо точно, на привлекают логарифмы по основанию 2. ㏒₂12 ≈ 3.58496. Вот такой ответ.
Определяем мощность (количество символов) использующегося алфавита. 12 букв и 10 цифр составляют 22 символа. В 1 байте допустимо запоминать 256 комбинаций, поэтому "минимальное количество байтов" для кодирования символа равно 1. Номер из 6 символов займет 6 байт.
А для 32 номеров потребуется 32×6 = 192 байта.
Я встречал эту задачу в несколько ином виде: Каждый символ кодируется одинаковым и минимально возможным количеством не байтов, а бит. А номер кодируется минимально возможным количеством байт. Тогда получается 5 бит на символ (2⁴ < 22 < 2⁵), 6 символов требуют 5×6 = 30 бит = 30/8 ≈ 4 байта. А 32 номера занимают 32×4 = 128 байт.
c1 = input()
c2 = input()
c3 = input()
city_list = [c1, c2, c3]
len_min = 2147483647
len_max = 0
min_city = max_city = ''
for city in city_list:
if len(city) < len_min:
min_city = city
len_min = len(city)
if len(city) > len_max:
max_city = city
len_max = len(city)
print(min_city)
print(max_city)