···11+import re
22+import fileinput
33+44+marker_re = re.compile(r'(\d+)x(\d+)')
55+66+77+def decompressed_len(data, improved=False):
88+ length = 0
99+1010+ while re.findall(marker_re, data):
1111+ take, repeat = (int(x) for x in re.findall(marker_re, data)[0])
1212+1313+ # Remove any text before the first marker
1414+ length += data.index('(')
1515+1616+ # Strip the marker
1717+ end = data.index(')')
1818+ data = data[end+1:]
1919+2020+ to_repeat = data[:take]
2121+2222+ if '(' in to_repeat and improved:
2323+ length += (decompressed_len(to_repeat, improved=True) * repeat)
2424+ else:
2525+ length += take * repeat
2626+2727+ data = data[take:]
2828+2929+ return length + len(data)
3030+3131+3232+payload = fileinput.input()[0].strip()
3333+3434+print "Length of original format:", decompressed_len(payload)
3535+print "Length of improved format:", decompressed_len(payload, improved=True)