1、先判断掩码是否正确,主要是掩码数字字符、网络段与主机段,是否都符合要求。

2、再判断两个ip是否正确,主要是数字字符是否符合要。

3、最后两个ip地址与子网掩码分段二进制位与运算,判断是否在同一个网段。

import sys

for line in sys.stdin:#建议采用循环输入或子函数
    mask = list(map(int, line.split(".")))
    ip1 = list(map(int, input().split(".")))
    ip2 = list(map(int, input().split(".")))
    bima = ""#存储子网掩码的二进制形式
    ermk = False#子网掩码的数字是否有误
    for i in range(4):#判断子网掩码的数字是否符合要求,并分段把子网掩码转化为二进制形式
        if mask[i] < 0 or mask[i] > 255:
            ermk = True
            print(1)
            break
        bm = bin(mask[i])[2:]
        bima += "0" * (8 - len(bm)) + bm
    if ermk:
        continue
    if "0" in bima.rstrip("0") or "1" in bima.lstrip("1"):#判断子网掩码的主机段和网络段是否符合要求
        print(1)
        continue
    erip = False#ip地址的数字是否有误
    for i in range(4):
        if ip1[i] < 0 or ip1[i] > 255 or ip2[i] < 0 or ip2[i] > 255:
            erip = True
            print(1)
            break
    if erip:
        continue
    iscn = True#与子网掩码分段位与运算,判断两个IP是否在同一个网段
    for i in range(4):
        if ip1[i] & mask[i] != ip2[i] & mask[i]:
            iscn = False
            print(2)
            break
    if iscn:
        print(0)