
print(bin(192)[2:], bin(168)[2:], bin(32)[2:], bin(160)[2:])
print(bin(255)[2:], bin(255)[2:], bin(255)[2:], bin(240)[2:])
11000000 10101000 100000 10100000 11111111 11111111 11111111 11110000
11000000 10101000 100000 1010000 - считаем кол-во единиц - 8 - это и есть ответ (почему? я не понимаю)

from ipaddress import *
for mask in range(16, 31):
net1 = ip_network(f'157.127.172.56/{mask}',0)
net2 = ip_network(f'157.127.191.78/{mask}',0)
if net1 != net2 and ip_address('157.127.172.56') not in (net1[0], net1[-1]) and \\
ip_address('157.127.191.78') not in (net2[0], net2[-1]):
print(mask) #отв 20