@@ -0,0 +1,200 @@
Case #1: 10 29
Case #2: 023 023
Case #3: 0 0
Case #4: 05 00
Case #5: 090 049
Case #6: 070 039
Case #7: 99 99
Case #8: 090 039
Case #9: 006 016
Case #10: 820 820
Case #11: 014 014
Case #12: 039 070
Case #13: 080 049
Case #14: 050 009
Case #15: 039 090
Case #16: 609 601
Case #17: 029 070
Case #18: 050 050
Case #19: 070 019
Case #20: 909 990
Case #21: 550 550
Case #22: 060 029
Case #23: 466 460
Case #24: 039 080
Case #25: 029 080
Case #26: 05 09
Case #27: 993 998
Case #28: 050 019
Case #29: 000 009
Case #30: 9 9
Case #31: 603 609
Case #32: 019 060
Case #33: 992 998
Case #34: 053 053
Case #35: 059 090
Case #36: 905 905
Case #37: 800 800
Case #38: 00 00
Case #39: 809 199
Case #40: 049 090
Case #41: 09 09
Case #42: 159 151
Case #43: 09 09
Case #44: 99 90
Case #45: 090 090
Case #46: 358 358
Case #47: 9 9
Case #48: 737 727
Case #49: 199 199
Case #50: 507 500
Case #51: 300 300
Case #52: 098 093
Case #53: 110 110
Case #54: 990 909
Case #55: 407 401
Case #56: 029 060
Case #57: 005 004
Case #58: 100 100
Case #59: 09 09
Case #60: 90 99
Case #61: 99 99
Case #62: 160 160
Case #63: 00 00
Case #64: 90 90
Case #65: 362 462
Case #66: 079 079
Case #67: 99 99
Case #68: 807 800
Case #69: 009 040
Case #70: 090 059
Case #71: 09 99
Case #72: 90 90
Case #73: 15 10
Case #74: 00 99
Case #75: 0 0
Case #76: 002 002
Case #77: 00 00
Case #78: 680 686
Case #79: 106 104
Case #80: 015 065
Case #81: 019 070
Case #82: 740 740
Case #83: 049 080
Case #84: 10 15
Case #85: 068 068
Case #86: 05 05
Case #87: 070 029
Case #88: 291 291
Case #89: 236 036
Case #90: 080 029
Case #91: 379 119
Case #92: 998 993
Case #93: 99 99
Case #94: 010 010
Case #95: 900 700
Case #96: 060 019
Case #97: 5 5
Case #98: 742 742
Case #99: 099 090
Case #100: 90 09
Case #101: 092 098
Case #102: 009 999
Case #103: 904 904
Case #104: 129 129
Case #105: 820 320
Case #106: 200 200
Case #107: 93 98
Case #108: 090 090
Case #109: 800 600
Case #110: 998 992
Case #111: 05 05
Case #112: 90 90
Case #113: 410 410
Case #114: 014 014
Case #115: 318 310
Case #116: 203 203
Case #117: 367 767
Case #118: 95 95
Case #119: 040 040
Case #120: 430 455
Case #121: 00 00
Case #122: 5 5
Case #123: 386 386
Case #124: 460 560
Case #125: 884 884
Case #126: 549 549
Case #127: 05 05
Case #128: 916 615
Case #129: 720 720
Case #130: 456 956
Case #131: 954 414
Case #132: 99 99
Case #133: 968 967
Case #134: 093 098
Case #135: 390 149
Case #136: 057 052
Case #137: 00 09
Case #138: 09 09
Case #139: 309 990
Case #140: 95 99
Case #141: 004 004
Case #142: 900 909
Case #143: 565 569
Case #144: 019 019
Case #145: 958 948
Case #146: 05 05
Case #147: 000 000
Case #148: 274 283
Case #149: 00 00
Case #150: 909 900
Case #151: 014 074
Case #152: 397 397
Case #153: 040 039
Case #154: 603 603
Case #155: 99 99
Case #156: 00 05
Case #157: 051 054
Case #158: 080 039
Case #159: 662 652
Case #160: 009 050
Case #161: 99 95
Case #162: 992 895
Case #163: 00 00
Case #164: 060 095
Case #165: 090 099
Case #166: 091 091
Case #167: 350 350
Case #168: 920 520
Case #169: 09 00
Case #170: 020 005
Case #171: 99 99
Case #172: 009 390
Case #173: 002 002
Case #174: 620 620
Case #175: 95 95
Case #176: 314 504
Case #177: 060 060
Case #178: 99 99
Case #179: 040 009
Case #180: 360 460
Case #181: 0 0
Case #182: 99 09
Case #183: 060 009
Case #184: 210 210
Case #185: 90 90
Case #186: 009 060
Case #187: 98 93
Case #188: 092 093
Case #189: 769 769
Case #190: 00 00
Case #191: 657 657
Case #192: 009 000
Case #193: 030 038
Case #194: 019 030
Case #195: 823 827
Case #196: 019 050
Case #197: 09 05
Case #198: 621 671
Case #199: 039 080
Case #200: 092 042
@@ -0,0 +1,47 @@
#!/usr/bin/env python

def scores(sa, sb):
# work with strings as lists
a = list(sa)
b = list(sb)
# get the length
n = len(a)
assert n == len(b)
# first can replace any unmatched ?'s
for i in range(n):
if a[i] == '?' and b[i] != '?':
a[i] = b[i]
elif a[i] != '?' and b[i] == '?':
b[i] = a[i]

# now all ?'s are matching and there are two cases
if a[0] == '?':
a[0] = b[0] = '0'
va = 0
vb = 0
for i in range(1, n):
if a[i] == '?':
if a[i-1] == b[i-1]:
a[i] = b[i] = '0'
elif va < vb:
a[i] = '9'
b[i] = '0'
else:
a[i] = '0'
b[i] = '9'
va = 10 * va + int(a[i])
vb = 10 * vb + int(b[i])

# return scoreboard string
return ''.join(a) + ' ' + ''.join(b)


def main():
T = int(raw_input())
for i in range(T):
a, b = raw_input().split()
print 'Case #%s: %s' % ((i+1), scores(a, b))


if __name__ == "__main__":
main()
@@ -0,0 +1,5 @@
4
1? 2?
?2? ??3
? ?
?5 ?0