Jasper Yu says to YSITD
import ipaddress mips = open('mips').read().strip().split('\n') known = open('known').read().strip().split('\n') def dist(a, b): for i in range(32, 1, -1): rana = ipaddress.IPv4Network(a+'/32').supernet(new_prefix=i) ranb = ipaddress.IPv4Network(b+'/32').supernet(new_prefix=i) if ipaddress.IPv4Address(a) in ranb or ipaddress.IPv4Address(b) in rana: return i**8 return 0 def score_cal(oscore): t = 0 for i in range(len(oscore)): t += oscore[i] * 0.95**i return t print('Possible Malicious IPs:', mips) print('Known Malicious IPs:', known) print('-'*20) for i in mips: score = [] for j in known: score.append(dist(i, j) ** 2) score.sort() score.reverse() print() print('IP:', i) print('Score:', score_cal(score)//1e22)