import sys
class Solution:
def solve(self, str1: str, str2:str) -> (int, int):
hour1 = str1.split(":")[0]
minute1 = str1.split(":")[1]
hour2 = str2.split(":")[0]
minute2 = str2.split(":")[1]
# compare hour
candidateHourList1 = self.candidateHourList(hour1)
candidateHourList2 = self.candidateHourList(hour2)
# compare minute
candidateMinList1 = self.candidateMinuteList(minute1)
candidateMinList2 = self.candidateMinuteList(minute2)
# maketime cadidate
cand1 = []
for h1 in candidateHourList1:
for m1 in candidateMinList1:
cand1.append(h1 * 60 + m1)
cand2 = []
for h2 in candidateHourList2:
for m2 in candidateMinList2:
cand2.append(h2 * 60 + m2)
maxdist = abs(cand1[0] - cand2[-1])
mindist = 24 * 60
ind1 = 0
ind2 = 0
while ind1 < len(cand1) and ind2 < len(cand2):
if cand2[ind2] >= cand1[ind1]:
mindist = min(mindist, abs(cand1[ind1] - cand2[ind2]))
if cand1[ind1] == cand2[ind2]:
break
elif cand1[ind1] >= cand2[ind2]:
ind2 += 1
else:
ind1 += 1
return max(1, mindist), maxdist
def candidateHourList(self, str: str) -> List[int]:
if '?' not in str:
return [int(str)]
if str == '??':
return [ind for ind in range(24)]
if str[0] == '?':
if str[1] >= '4':
return [int(str[1]), int('1' + str[1])]
else:
return [int(str[1]), int('1' + str[1]), int('2' + str[1])]
if str[1] == '?':
if str[0] == '2':
return [int(str[0]+'0'), int(str[0]+'1'), int(str[0]+'2'), int(str[0]+'3')]
else:
return [int(str[0])*10+ind for ind in range(10)]
return []
def candidateMinuteList(self, str: str) -> List[int]:
if '?' not in str:
return [int(str)]
if str == '??':
return [ind for ind in range(60)]
if str[0] == '?':
return [int(str[1])+ind*10 for ind in range(6)]
if str[1] == '?':
return [int(str[0])*10+ind for ind in range(10)]
return []
message1 = input() # 输入行信息
message2 = input() # 输入行信息
solution = Solution()
mindist, maxdist = solution.solve(message1, message2)
print(mindist, maxdist)
# s1 = input()
# s2 = input()
# # 创建两个空列表存储可能的时间
# list1 = []
# list2 = []
# # 遍历0 - 60 * 24 分钟
# for i in range(0, 60 * 24):
# hour = int(i //60) # 获取小时
# minute = int(i % 60) # 获取分钟
# # 十位数等于"?",或者与hour(mimute) // 10相等时,遍历值可取
# # 十位数等于"?",或者与hour(mimute) % 10相等时,遍历值可取
# if s1[0] == '?' or int(s1[0]) == hour // 10:
# if s1[1] == '?' or int(s1[1]) == hour % 10:
# if s1[3] == '?' or int(s1[3]) == minute // 10:
# if s1[4] == '?' or int(s1[4]) == minute % 10:
# list1.append(i)
# if s2[0] == '?' or int(s2[0]) == hour // 10:
# if s2[1] == '?' or int(s2[1]) == hour % 10:
# if s2[3] == '?' or int(s2[3]) == minute // 10:
# if s2[4] == '?' or int(s2[4]) == minute % 10:
# list2.append(i)
# # 初始化最大值、最小值
# mintime = 60 * 24
# maxtime = 0
# # 遍历两个列表,取可能的组合,计算最大值、最小值
# for i in range(len(list1)):
# for j in range(len(list2)):
# if list1[i] < list2[j]:
# mintime = min(mintime, list2[j] - list1[i])
# maxtime = max(maxtime, list2[j] - list1[i])
# print(mintime, maxtime)
# print(list1)
# print(list2)