import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String mask = in.nextLine(); String ip1 = in.nextLine(); String ip2 = in.nextLine(); if (!isLegalIP(ip1) || !isLegalIP(ip2) || !isLegalMask(mask)) { System.out.println(1); } else { int[] i1 = mask(values(ip1), values(mask)); int[] i2 = mask(values(ip2), values(mask)); if (equals(i1, i2)) { System.out.println(0); } else { System.out.println(2); } } } static int[] mask(int[] ip, int[] mask) { for (int i = 0; i < 4; i++) { ip[i] &= mask[i]; } return ip; } static boolean equals(int[] ip1, int[] ip2) { for (int i = 0; i < 4; i++) { if (ip1[i] != ip2[i]) { return false; } } return true; } static boolean isLegalIP(String ip) { String[] temp = ip.split("\\."); if (temp.length != 4) { return false; } for (int i = 0; i < temp.length; i++) { if (!temp[i].matches("[1-9]\\d*|0") || Integer.parseInt(temp[i]) > 255) { return false; } } return true; } static int[] values(String ip) { String[] s = ip.split("\\."); int[] v = new int[s.length]; for (int i = 0; i < v.length; i++) { v[i] = Integer.parseInt(s[i]); } return v; } static boolean isLegalMask(String mask) { if (!isLegalIP(mask)) { return false; } else { int[] v = values(mask); int x = (v[0] << 24) | (v[1] << 16) | (v[2] << 8) | v[3]; int b = Integer.bitCount(x); if (b == 0 || b == 32) { return false; } int m = 1 << 31; while (true) { if ((m & x) == 0) { break; } b--; m >>>= 1; } return b == 0; } } }