human
I found an interesting problem on https://codeforces.com/problemset/problem/291/C:
The problem uses a simplified TCP/IP address model, please make sure you've read the statement attentively.

Polycarpus has found a job, he is a system administrator. One day he came across n IP addresses. Each IP address is a 32 bit number, represented as a group of four 8-bit numbers (without leading zeroes), separated by dots. For example, the record 0.255.1.123 shows a correct IP address and records 0.256.1.123 and 0.255.1.01 do not. In this problem an arbitrary group of four 8-bit numbers is a correct IP address.

Having worked as an administrator for some time, Polycarpus learned that if you know the IP address, you can use the subnet mask to get the address of the network that has this IP addess.

The subnet mask is an IP address that has the following property: if we write this IP address as a 32 bit string, that it is representable as "11...11000..000". In other words, the subnet mask first has one or more one bits, and then one or more zero bits (overall there are 32 bits). For example, the IP address 2.0.0.0 is not a correct subnet mask as its 32-bit record looks as 00000010000000000000000000000000.

To get the network address of the IP address, you need to perform the operation of the bitwise "and" of the IP address and the subnet mask. For example, if the subnet mask is 255.192.0.0, and the IP address is 192.168.1.2, then the network address equals 192.128.0.0. In the bitwise "and" the result has a bit that equals 1 if and only if both operands have corresponding bits equal to one.

Now Polycarpus wants to find all networks to which his IP addresses belong. Unfortunately, Polycarpus lost subnet mask. Fortunately, Polycarpus remembers that his IP addresses belonged to exactly k distinct networks. Help Polycarpus find the subnet mask, such that his IP addresses will belong to exactly k distinct networks. If there are several such subnet masks, find the one whose bit record contains the least number of ones. If such subnet mask do not exist, say so.

-----Input-----

The first line contains two...

I tried it in Python, but could not do it. Can you solve it?
assistant
#Here is Python code to find all networks to which his IP addresses belong.

import math
import re
from fractions import Fraction
from collections import Counter

class Task:
    ips = []
    k = 0
    answer = ''
    
    def __init__(self):
        n, self.k = [int(x) for x in input().split()]
        self.ips = ['' for _ in range(n)]
        for i in range(len(self.ips)):
            self.ips[i] = input()

    def solve(self):
        ips, k = self.ips, self.k
        ipAsNumbers = []
        for currentIp in ips:
            number = 0
            parts = currentIp.split('.')
            for i in range(0, len(parts)):
                number += int(parts[i]) * 2**(32 - (i + 1) * 8)
            ipAsNumbers += [number]

        mask = 0
        for i in range(31, -1, -1):
            mask += 2**i
            netAddresses = set()
            for ip in ipAsNumbers:
                netAddresses.add(mask & ip)
            if len(netAddresses) == k:
                mask = bin(mask)[2:]
                self.answer = '.'.join([str(int(mask[i : i + 8], 2)) \
                    for i in range(0, len(mask), 8)])
                return
        self.answer = '-1'

    def printAnswer(self):
        print(self.answer)
        #for line in self.answer:
        #    print(line)

task = Task()
task.solve()
task.printAnswer()