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;
    }
}