import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String str = in.nextLine();
String Ip1 = in.nextLine();
String Ip2 = in.nextLine();
boolean ishefa = isIp(Ip1) && isIp(Ip2) && isYanMA(str);
if (!ishefa) {
System.out.println(1);
} else {
System.out.println(isSupper(str, Ip1, Ip2) ? 0 : 2);
}
}
}
public static boolean isSupper(String str, String ip1, String ip2) {
String[] strArray = str.split("\\.");
String[] ip1Array = ip1.split("\\.");
String[] ip2Array = ip2.split("\\.");
for (int i = 0; i < 4; i++) {
int str11 = Integer.parseInt(strArray[i]);
int ip11 = Integer.parseInt(ip1Array[i]);
int ip12 = Integer.parseInt(ip2Array[i]);
if ((str11 & ip11) != (str11 & ip12)) return false;
}
return true;
}
public static boolean isIp(String ip) {
String[] ipArray = ip.split("\\.");
for (String tt : ipArray) {
int temp = Integer.parseInt(tt);
if (temp < 0 || temp > 255) return false;
}
return true;
}
public static boolean isYanMA(String str) {
String[] ipArray = str.split("\\.");
StringBuffer sb = new StringBuffer();
for (String tt : ipArray) {
int temp = Integer.parseInt(tt);
if (temp < 0 || temp > 255) return false;
String ll = Integer.toString(temp, 2);
if (ll.length() != 8) {
for (int i = 0; i < 8 -ll.length(); i++) {
sb.append('0');
}
}
sb.append(ll);
}
String result = sb.toString();
int index0 = result.indexOf('0');
if (index0 == -1) return true;
for (int i = 0; i < index0; i++) {
if (result.charAt(i) == '0') return false;
}
for (int i = index0; i < result.length(); i++) {
if (result.charAt(i) == '1') return false;
}
return true;
}
}