import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //3行输入,第1行是输入子网掩码、第2,3行是输入两个ip地址
        //题目的示例中给出了三组数据,但是在实际提交时,你的程序可以只处理一组数据(3行)。
        while (in.hasNextLine()){

            String mask = in.nextLine();
            String ip1 = in.nextLine();
            String ip2 = in.nextLine();
            invoke(mask,ip1,ip2);
        }

    }
    public static void invoke(String mask,String ip1,String ip2){
        //若IP地址或子网掩码格式非法则输出1,若IP1与IP2属于同一子网络输出0,若IP1与IP2不属于同一子网络输出2
        if(!validMask(mask) || !validIP(ip1) || !validIP(ip2)){
            System.out.println(1);
            return;
        }

        long maskNum = getNum(mask);
        long ip1Num = getNum(ip1);
        long ip2Num = getNum(ip2);
        if((maskNum & ip1Num) == (maskNum & ip2Num)){
            System.out.println(0);
        }else{
            System.out.println(2);
        }

    }

    /**
     * 有效掩码与IP的性质为:
     * 1. 掩码与IP每一段在 0 - 255 之间
     * 2. 掩码的二进制字符串前缀为网络号,都由‘1’组成;后缀为主机号,都由'0'组成
     */
    private static boolean validIP(String ip){
        String[] split = ip.split("\\.");
        for(String s : split){
            Integer num = Integer.valueOf(s);
            if(num < 0 || 255<num){
                return false;
            }
        }
        return true;
    }
    private static boolean validMask(String mask){
        if(!validIP(mask)) {
            return false;
        }
        Long maskNum = getNum(mask);
        char[] chars = Long.toString(maskNum,2).toCharArray();
        if(chars.length < 32){//注意! Long.toString方法会去除开头0
            return false;
        }
        boolean exist0 = false;
        for(char c : chars){
            if('0' == c){
                exist0 = true;
            }
            if(exist0 && '1' == c ){
                return false;
            }
        }

        return true;
    }
    private static Long getNum(String str){
        String[] split = str.split("\\.");
        long maskNum = 0;
        int i = 3;
        for(String s : split){
            Long num = Long.valueOf(s);
            maskNum |= num << i*8;
            i--;
        }

        return maskNum;
    }
}