def longest_substring_same01count(string):
# http://stackoverflow.com/a/26650828/4279
diff = 0 # difference between number of 1s and 0s preceding c
first = {}
diff_max_distance = max_distance = 0
for pos, c in enumerate('x' + string): # or chain(None, string)
diff += (c == '1') - (c == '0')
if diff not in first:
first[diff] = pos
elif max_distance < (pos - first[diff]):
max_distance = (pos - first[diff])
diff_max_distance = diff
return string[first[diff_max_distance]:first[diff_max_distance] + max_distance]
import sys
for line in sys.stdin:
line = line.strip()
if line:
print("%r\t%r" % (line, longest_substring_same01count(line)))
ZGVmIGxvbmdlc3Rfc3Vic3RyaW5nX3NhbWUwMWNvdW50KHN0cmluZyk6CiAgICAjIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI2NjUwODI4LzQyNzkKICAgIGRpZmYgPSAwICMgIGRpZmZlcmVuY2UgYmV0d2VlbiBudW1iZXIgb2YgMXMgYW5kIDBzIHByZWNlZGluZyBjCiAgICBmaXJzdCA9IHt9CiAgICBkaWZmX21heF9kaXN0YW5jZSA9IG1heF9kaXN0YW5jZSA9IDAKICAgIGZvciBwb3MsIGMgaW4gZW51bWVyYXRlKCd4JyArIHN0cmluZyk6ICMgb3IgY2hhaW4oTm9uZSwgc3RyaW5nKQogICAgICAgIGRpZmYgKz0gKGMgPT0gJzEnKSAtIChjID09ICcwJykKICAgICAgICBpZiBkaWZmIG5vdCBpbiBmaXJzdDoKICAgICAgICAgICAgZmlyc3RbZGlmZl0gPSBwb3MKICAgICAgICBlbGlmIG1heF9kaXN0YW5jZSA8IChwb3MgLSBmaXJzdFtkaWZmXSk6CiAgICAgICAgICAgIG1heF9kaXN0YW5jZSA9IChwb3MgLSBmaXJzdFtkaWZmXSkKICAgICAgICAgICAgZGlmZl9tYXhfZGlzdGFuY2UgPSBkaWZmCiAgICByZXR1cm4gc3RyaW5nW2ZpcnN0W2RpZmZfbWF4X2Rpc3RhbmNlXTpmaXJzdFtkaWZmX21heF9kaXN0YW5jZV0gKyBtYXhfZGlzdGFuY2VdCgppbXBvcnQgc3lzCmZvciBsaW5lIGluIHN5cy5zdGRpbjoKICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKICAgIGlmIGxpbmU6CiAgICAgICAgcHJpbnQoIiVyXHQlciIgJSAobGluZSwgbG9uZ2VzdF9zdWJzdHJpbmdfc2FtZTAxY291bnQobGluZSkpKQo=
MAoxCjEwCjExCjEwMAoxMDEKMTEwCjExMQoxMDAwCjEwMDEKMTAxMAoxMDExCjExMDAKMTEwMQoxMTEwCjExMTEKMTAwMDAKMTAwMDEKMTAwMTAKMTAwMTEKMTAxMDAKMTAxMDEKMTAxMTAKMTAxMTEKMTEwMDAKMTEwMDEKMTEwMTAKMTEwMTEKMTExMDAKMTExMDEKMTExMTAKMTExMTEKMTAwMDAwCjEwMDAwMQoxMDAwMTAKMTAwMDExCjEwMDEwMAoxMDAxMDEKMTAwMTEwCjEwMDExMQoxMDEwMDAKMTAxMDAxCjEwMTAxMAoxMDEwMTEKMTAxMTAwCjEwMTEwMQoxMDExMTAKMTAxMTExCjExMDAwMAoxMTAwMDEKMTEwMDEwCjExMDAxMQoxMTAxMDAKMTEwMTAxCjExMDExMAoxMTAxMTEKMTExMDAwCjExMTAwMQoxMTEwMTAKMTExMDExCjExMTEwMAoxMTExMDEKMTExMTEwCjExMTExMQo=
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
101111
110000
110001
110010
110011
110100
110101
110110
110111
111000
111001
111010
111011
111100
111101
111110
111111