import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String startTime = input.nextLine();
        String endTime = input.nextLine();
        getDuring02(startTime, endTime);
    }

    //思路一:分别找出startTime 与 endTime的所有可能值
    //遍历两个集合,找出min与max
    public static void getDuring01(String startTime, String endTime) {
        ArrayList<Integer> times01 = new ArrayList<>();
        ArrayList<Integer> times02 = new ArrayList<>();
        setTimes(times01, startTime);
        setTimes(times02, endTime);
        int min = 60 * 24 - 1;
        int max = 1;
        for (int i = 0; i < times02.size(); i++) {
            for (int j = 0; j < times01.size(); j++) {
                if (times02.get(i) > times01.get(j)) {
                    min = Math.min(times02.get(i) - times01.get(j), min);
                    max = Math.max(times02.get(i) - times01.get(j), max);
                }
            }
        }
        System.out.println(min + " " + max);
    }

    private static void setTimes(ArrayList<Integer> times, String time) {
        int i = 0;
        int max = 60 * 24;
        int hour;
        int minute;
        for (i = 0; i < max; i++) {
            hour = i % 60;
            minute = i / 60;
            if (time.charAt(0) == '?' || time.charAt(0) - '0' == hour % 10) {
                if (time.charAt(1) == '?' || time.charAt(1) - '0' == hour / 10) {
                    if (time.charAt(3) == '?' || time.charAt(3) - '0' == minute % 10) {
                        if (time.charAt(4) == '?' || time.charAt(4) - '0' == minute / 10) {
                            times.add(i);
                        }
                    }
                }
            }
        }
    }

    //思路二:startTime与endTime的值确定时应考虑对方,一次性找出需要的解
    private static void getDuring02(String startTime, String endTime) {
        int max = getMax(startTime, endTime);
        int min = getMin(startTime, endTime);
        System.out.println(min + " " + max);
    }

    private static int getMin(String startTime, String endTime) {
        char sH1 = startTime.charAt(0);
        char sH2 = startTime.charAt(1);
        char sM1 = startTime.charAt(3);
        char sM2 = startTime.charAt(4);
        char eH1 = endTime.charAt(0);
        char eH2 = endTime.charAt(1);
        char eM1 = endTime.charAt(3);
        char eM2 = endTime.charAt(4);
        int min = 0;
        //确定sH1与eH1
        if (sH1 != '?' && eH1 == '?') {
            if (sH2 != '?' && eH2 != '?' && eH2 < sH2) {
                eH1 = (char)(sH1+1);
            } else if (sH2 != '?' && eH2 != '?' && eH2 == sH2) {
                if(eM1!='?'&&sM1!='?'&&sM1>eM1){
                    eH1 = (char)(sH1+1);
                }else if(eM1!='?'&&sM1!='?'){
                    if(eM2!='?'&&sM2!='?'&&sM2>eM2){
                        eH1 = (char)(sH1+1);
                    }
                }
            } else {
                eH1 = sH1;
            }
        } else if (sH1 == '?' && eH1 != '?') {
            if (sH2 != '?' && eH2 != '?' && eH2 < sH2) {
                sH1 = (char) (eH1-1);
            }else if (sH2 != '?' && eH2 != '?' && eH2 == sH2) {
                if(eM1!='?'&&sM1!='?'&&sM1>eM1){
                    sH1 = (char) (eH1-1);
                }else if(eM1!='?'&&sM1!='?'){
                    if(eM2!='?'&&sM2!='?'&&sM2>eM2){
                        sH1 = (char) (eH1-1);
                    }
                }
            }else {
                sH1 = eH1;
            }
        } else if (sH1 == '?') {
            if (sH2 != '?' && eH2 != '?' && eH2 < sH2) {
                eH1 = '1';
            }else {
                eH1 = '0';
            }
            sH1 = '0';
        }

        //确定sH2与eH2
        if(sH2 != '?' && eH2 == '?'){
            if(eH1 == sH1){
                if(eM1!='?'&&sM1!='?'&&sM1>eM1){
                    eH2 = (char)(sH2+1);
                }else if(eM1!='?'&&sM1!='?'){
                    if(eM2!='?'&&sM2!='?'&&sM2>eM2){
                        eH2 = (char)(sH2+1);
                    }
                }else {
                    eH2 = sH2;
                }
            }else{
                eH2 = '0';
            }
        } else if (sH2 == '?' && eH2 != '?') {
            if(eH1 == sH1){
                if(eM1!='?'&&sM1!='?'&&sM1>eM1){
                    sH2 = (char)(eH2-1);
                }else if(eM1!='?'&&sM1!='?'){
                    if(eM2!='?'&&sM2!='?'&&sM2>eM2){
                        sH2 = (char)(eH2-1);
                    }
                }else {
                    sH2 = eH2;
                }
            }else {
                sH2 = '9';
            }
        } else if (sH2 == '?') {
            if(eM1!='?'&&sM1!='?'&&sM1>eM1){
                eH2 = '1';
            }else if(eM1!='?'&&sM1!='?'){
                if(eM2!='?'&&sM2!='?'&&sM2>eM2){
                    eH2 = '1';
                }
            }else {
                eH2 = '0';
            }
            sH2 = '0';
        }

        //确定sM1与eM1
        if(eH1==sH1 && eH2==sH2){
            if (sM1 != '?' && eM1 == '?') {
                if (sM2 != '?' && eM2 != '?' && eM2 < sM2) {
                    eM1 = (char)(sM1+1);
                }else {
                    eM1 = sM1;
                }
            } else if (sM1 == '?' && eM1 != '?') {
                if (sM2 != '?' && eM2 != '?' && eM2 < sM2) {
                    sM1 = (char) (eM1-1);
                }else {
                    sM1 = eM1;
                }
            } else if (sM1 == '?') {
                if (sM2 != '?' && eM2 != '?' && eM2 < sM2) {
                    eM1 = '1';
                }else {
                    eM1 = '0';
                }
                sM1 = '0';
            }
        }else {
            if(sM1=='?'){
                sM1 = '5';
            }
            if(eM1=='?'){
                eM1 = '0';
            }
        }


        //确定sM2与eM2
        if(sM2 != '?' && eM2 == '?'){
            if(eM1 == sM1){
                eM2 = sM2;
            }else {
                eM2 = '0';
            }
        } else if (sM2 == '?' && eM2 != '?') {
            if(eM1 == sM1){
                sM2 = eM2;
            }else {
                sM2 = '9';
            }
        } else if (sM2 == '?') {
            if(sH1==eH1 && sH2 == eH2 && sM1 == eM1){
                sM2 = '0';
            }else {
                sM2 = '9';
            }
            eM2 = '0';
        }
        int time1 = Integer.parseInt(""+sH1+sH2)*60 + Integer.parseInt(""+sM1+sM2);
        int time2 = Integer.parseInt(""+eH1+eH2)*60 + Integer.parseInt(""+eM1+eM2);
        min = time2 -time1;

        return min==0?1:min;
    }

    private static int getMax(String startTime, String endTime) {
        char sH1 = startTime.charAt(0);
        char sH2 = startTime.charAt(1);
        char sM1 = startTime.charAt(3);
        char sM2 = startTime.charAt(4);
        char eH1 = endTime.charAt(0);
        char eH2 = endTime.charAt(1);
        char eM1 = endTime.charAt(3);
        char eM2 = endTime.charAt(4);
        int max = 0;
        //确定sH1与eH1
        if (sH1 != '?' && eH1 == '?') {
            if(eH2!='?'&&eH2>'3'){
                eH1 = '1';
            }else {
                eH1 = '2';
            }
        } else if (sH1 == '?' && eH1 != '?') {
            sH1 = '0';
        } else if (sH1 == '?') {
            if (eH2!='?'&&eH2>'3') {
                eH1 = '1';
            }else {
                eH1 = '2';
            }
            sH1 = '0';
        }

        //确定sH2与eH2
        if(sH2 != '?' && eH2 == '?'){
            if(eH1 == '2'){
                eH2 = '3';
            }else {
                eH2 = '9';
            }
        } else if (sH2 == '?' && eH2 != '?') {
            sH2 = '0';
        } else if (sH2 == '?') {
            sH2 = '0';
            if(eH1 == '2'){
                eH2 = '3';
            }else {
                eH2 = '9';
            }
        }

        //确定sM1与eM1
        if(sM1 == '?'){
            sM1 = '0';
        }
        if(eM1 == '?'){
            eM1 = '5';
        }

        //确定sM2与eM2
        if(sM2 == '?'){
            sM2 = '0';
        }
        if(eM2 == '?'){
            eM2 = '9';
        }

        int time1 = Integer.parseInt(""+sH1+sH2)*60 + Integer.parseInt(""+sM1+sM2);
        int time2 = Integer.parseInt(""+eH1+eH2)*60 + Integer.parseInt(""+eM1+eM2);
        max = time2 -time1;

        return max;
    }
}