#和18题有点类似
#思路:
#判断输入是否合法
#进行运算,判断是否在同一子网

#ip格式
def checkip(s):
    a=s.split(".")
    for i in range(len(a)):
        a[i]=int(a[i])
    for i in a:
        if 0<=i<=255:
            continue
        else:
            return False
    return True
#子网掩码格式
def checkmask(s):
    a=s.split(".")
    for i in range(len(a)):#判断范围
        a[i]=int(a[i])
        if not 0<=a[i]<=255:
            return False
    for i in range(len(a)):
        a[i]=bin(a[i])[2:]#转为二进制字符串,去掉前缀
        a[i]='0'*(8-len(a[i]))+a[i]#补0
    b="".join(a)
    if "10" in b and len(b.split("10"))==2:#检验前面全1后面全0
        c=b.split("10")
        if c[0].count("1")==len(c[0]) and c[1].count("0")==len(c[1]):
            return True
    else:
        return False
#运算
def op(mask,ip1,ip2):
    a=mask.split(".")
    b=ip1.split(".")
    c=ip2.split(".")
    for i in range(len(a)):
        a[i]=int(a[i])
        b[i]=int(b[i])
        c[i]=int(c[i])
        if a[i]&b[i]==a[i]&c[i]:
            continue
        else:
            return 2
    return 0

 
mask=input()
ip1=input()
ip2=input()
if not checkip(ip1) or not checkip(ip2) or not checkmask(mask):
    print(1)
else:
    print(op(mask,ip1,ip2))