import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//获得两个字符串
		Scanner scanner = new Scanner(System.in);
		String s1 = scanner.next();
		String s2 = scanner.next();
		//创建两个集合用于存储符合规则的数
		List<Integer> list1 = new ArrayList<Integer>();
		List<Integer> list2 = new ArrayList<Integer>();
		//在60*24这个最大范围里进行遍历
		for(int i = 0;i<60*24;i++) {
			int hour = i/60;
			int mint = i%60;
			if((s1.charAt(0)=='?'||s1.charAt(0)-'0'==hour/10)&&(s1.charAt(1)=='?'||s1.charAt(1)-'0'==hour%10)&&(s1.charAt(3)=='?'||s1.charAt(3)-'0'==mint/10)&&(s1.charAt(4)=='?'||s1.charAt(4)-'0'==mint%10)) {
				//找到符合第一个字符串要求的数存储在集合1
				list1.add(i);
			}
			if((s2.charAt(0)=='?'||s2.charAt(0)-'0'==hour/10)&&(s2.charAt(1)=='?'||s2.charAt(1)-'0'==hour%10)&&(s2.charAt(3)=='?'||s2.charAt(3)-'0'==mint/10)&&(s2.charAt(4)=='?'||s2.charAt(4)-'0'==mint%10)) {
				//找到符合第一个字符串要求的数存储在集合2
				list2.add(i);
			}
		}
		
		//定义最小,最大变量,并初始化
		//最小值故意初始化为最大范围
		//最大值故意初始化为最小范围
		int min = 60*24;
		int max = 0;
		
		//对集合1和集合2里面的数进行遍历
		for(int i = 0;i<list1.size();i++) {
			for(int j = 0;j<list2.size();j++) {
				//满足集合1小于集合2的数,进行相减求最值
				if(list1.get(i)<list2.get(j)) {
					
					min = Math.min((list2.get(j)-list1.get(i)), min);
					max = Math.max((list2.get(j)-list1.get(i)), max);
				}
			}
		}	
		System.out.println(min+" "+max);
	}
}