//自己没想出来,抄c排名第一个的
//方法:0 - 23*60+59,去试试符合 条件第一次手表格式否, 和第二次条件
//之前卡在先确定hour第一位,再比对第二位,再比对第三位上,因为情况太多(其实也可以实现),直接放弃。
//符合就进入候选数组
//遍历比对得到相差最小值,最大值

#include <stdio.h>
#include<malloc.h>

int main() {
    char time1[6];
    for (int i = 0; i < 5; i++) {
        scanf("%c", &time1[i]);
    }
    char time2[6];
 scanf("%s",&time2[0]);



// 枚举法
    int biggest_time = 23 * 60 + 59;
// 存储可能值
    int* time1Possib = (int*)malloc(sizeof(int) * biggest_time);
    int len1 = 0;
    int* time2Possib = (int*)malloc(sizeof(int) * biggest_time);;
    int len2 = 0;
    for (int i = 0; i <= biggest_time; i++) {
        int hour = i / 60;
        int minu = i % 60;
        if ((hour / 10 == time1[0] - '0' || time1[0] == '?') &&
                (hour % 10 == time1[1] - '0' || time1[1] == '?') && ( minu / 10 == time1[3]  - '0'||
                        time1[3] == '?') && (minu % 10 == time1[4] - '0' || time1[4] == '?')) {
            time1Possib[len1++] = i;

        }

        if ((hour / 10 == time2[0] - '0' || time2[0] == '?') &&
                (hour % 10 == time2[1] - '0' || time2[1] == '?') && ( minu / 10 == time2[3]  - '0'||
                        time2[3] == '?') && (minu % 10 == time2[4]  - '0'|| time2[4] == '?')) {
            time2Possib[len2++] = i;

        }
    }
    int max = 0;
    int min = biggest_time;

for(int i = 0;i<len1;i++){
    for(int j =0;j<len2;j++){
        if(time1Possib[i]<time2Possib[j]){
            min = time2Possib[j]-time1Possib[i]<min?time2Possib[j]-time1Possib[i]:min;
            max = time2Possib[j]-time1Possib[i]>max?time2Possib[j]-time1Possib[i]:max;
        }
    }
}

printf("%d %d",min, max);


    return 0;
}