'''Пример 13.9. В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показыва‑ ет, какая часть IP‑адреса узла сети
относится к адресу сети, а какая — к адресу узла в этой сети. Адрес
сети получается в результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.

Сеть задана IP‑адресом 108.56.132.78 и маской сети 255.255.224.0.
Определите минимальную сумму единиц в двоичной записи IP‑адреса в этой
сети. В ответе укажите только число.

11010110101010101010101 00000000
11010110101010101010101 00000001
...

'''


from ipaddress import ip_network

net = ip_network('108.56.132.78/255.255.224.0', 0)

t = []
for ip in net: 
    ip2 = f'{ip:b}'
    t += [ip2.count('1')]

print(min(t)) # 8

print(f'{net[0]:b}'.count('1')) # 8 ok  Мин. кол-во единиц в адресе сети


# ev-13: 43, 44, 45, 46,       47




