import java.util.*;
public class Main{
public static void main(String[] arg){
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine()){
String[] ym = sc.nextLine().split("\\.");
String[] ip1 = sc.nextLine().split("\\.");
String[] ip2 = sc.nextLine().split("\\.");
if(ym.length!=4||ip1.length!=4||ip2.length!=4){
System.out.println(1);
continue;
}
boolean flag = true;
for(int i=0;i<ym.length;i++){
if(Integer.parseInt(ym[i])<0||Integer.parseInt(ym[i])>255||Integer.parseInt(ip1[i])<0||Integer.parseInt(ip1[i])>255||Integer.parseInt(ip2[i])<0||Integer.parseInt(ip2[i])>255){
System.out.println(1);
flag = false;
break;
}
}
if(!flag){
continue;
}
//判断掩码是否有效
StringBuffer buffer = new StringBuffer();
for(int i=0;i<ym.length;i++){
buffer.append(leftZero(Integer.toBinaryString(Integer.parseInt(ym[i]))));
}
if(buffer.lastIndexOf("1")>=buffer.indexOf("0")){
System.out.println(1);
continue;
}
//判断是否同一子网
boolean flag1 = true;
for(int i=0;i<ym.length;i++){
if((Integer.parseInt(ym[i])&Integer.parseInt(ip1[i]))!=(Integer.parseInt(ym[i])&Integer.parseInt(ip2[i]))){
System.out.println(2);
flag1 = false;
break;
}
}
if(flag1){
System.out.println(0);
}
}
}
public static String leftZero(String s){
while(s.length()<8){
s = "0"+s;
}
return s;
}
}