# 判断ip合法性
def hefaip(list):
    for i in list:
        if int(i) < 0 or int(i) > 255:
            return False
    return True
#判断掩码合法性
def hefamask(mask):
    a = change2(mask)
    if a[0] != '11111111' or a[3] != '00000000':
        return False
    else:
        return hefaip(mask)
#转二进制
def change2(list):
    new_list = []
    for i in list:
        a = bin(int(i,10))[2:]
        a = '0'*(8-len(a)) + a if len(a)<8 else a
        new_list.append(a)
    return new_list #元素为str
#AND运算
def newip2(mask,ip):
    newip2_list = []
    for i in range(4):
        list = []
        for j in range(8):
            a = '1' if mask[i][j] == '1' and ip[i][j] == '1' else '0'
            list.append(a)
        b = ''.join(list)
        newip2_list.append(b)
    return newip2_list

while True:
    try:
        mask = input().split('.')
        ip1 = input().split('.')
        ip2 = input().split('.')
    except:
        break
    else:
        # 二进制转换32位
        mask_2 = change2(mask)
        ip1_2 = change2(ip1)
        ip2_2 = change2(ip2)
        #判断合法ip
        if hefaip(ip1) and hefaip(ip2) and hefamask(mask):
            # ADN运算
            ip1_new = newip2(mask_2, ip1_2)
            ip2_new = newip2(mask_2, ip2_2)
            # 判断ip是否相同
            if ip1_new == ip2_new:
                print('0')
            else:
                print('2')
        else:
            print('1')