''' № 13.46 (). В терминологии сетей TCP/IP маской сети называют
двоичное число, которое показывает, какая часть IP‑адреса узла сети
относится к адресу сети, а какая — к адресу узла в этой сети. Адрес
сети получается в результате применения поразрядной конъюнкции к
заданному адресу узла и маске сети.

Сеть задана IP‑адресом 40.178.110.0
и маской сети 255.255.248.0. Сколько в этой сети IP‑адресов, для ко‑
торых количество единиц в каждом бай те IP‑адреса различно? В ответе
укажите только число. '''

from ipaddress import ip_network

net = ip_network('40.178.110.0/255.255.248.0', 0)

cnt = 0
for ip in net:
    ip2 = f'{ip:b}'
    t = {ip2[:8].count('1'), ip2[8:16].count('1'), \
         ip2[16:24].count('1'), ip2[24:].count('1')}
    if len(t) == 4:
        cnt += 1
        
print(cnt)  # 538 ok
    





    



