import re
def number_atom(chemicalFormula):
abcRegex = re.compile(r'([A-Z][a-z]?)(\d*)|(\d+)|([()]{1})')
abcSearch = abcRegex.findall(chemicalFormula)
nAtom = {}
tmpList = []
inBrackets = False
for atom, quantity, multiple, brackets in abcSearch:
if brackets == '(':
inBrackets = True
elif brackets == ')':
inBrackets = False
if inBrackets:
if atom and quantity:
tmpList.append([atom, int(quantity)])
elif atom:
tmpList.append([atom, 1])
elif not inBrackets and tmpList and multiple:
for a, n in tmpList:
n *= int(multiple)
if a in nAtom:
nAtom[a] += n
else:
nAtom[a] = n
tmpList = []
else:
if atom and not quantity:
nAtom[atom] = 1
elif atom and quantity:
nAtom[atom] = int(quantity)
print(chemicalFormula)
for key, value in nAtom.items():
print('{}: {}'.format(key, value))
print('------')
i = input()
number_atom(i)
aW1wb3J0IHJlCgpkZWYgbnVtYmVyX2F0b20oY2hlbWljYWxGb3JtdWxhKToKICAgIGFiY1JlZ2V4ID0gcmUuY29tcGlsZShyJyhbQS1aXVthLXpdPykoXGQqKXwoXGQrKXwoWygpXXsxfSknKQogICAgYWJjU2VhcmNoID0gYWJjUmVnZXguZmluZGFsbChjaGVtaWNhbEZvcm11bGEpCiAgICBuQXRvbSA9IHt9CiAgICB0bXBMaXN0ID0gW10KICAgIGluQnJhY2tldHMgPSBGYWxzZQogICAgZm9yIGF0b20sIHF1YW50aXR5LCBtdWx0aXBsZSwgYnJhY2tldHMgaW4gYWJjU2VhcmNoOgogICAgICAgIGlmIGJyYWNrZXRzID09ICcoJzoKICAgICAgICAgICAgaW5CcmFja2V0cyA9IFRydWUKICAgICAgICBlbGlmIGJyYWNrZXRzID09ICcpJzoKICAgICAgICAgICAgaW5CcmFja2V0cyA9IEZhbHNlCgogICAgICAgIGlmIGluQnJhY2tldHM6CiAgICAgICAgICAgIGlmIGF0b20gYW5kIHF1YW50aXR5OgogICAgICAgICAgICAgICAgdG1wTGlzdC5hcHBlbmQoW2F0b20sIGludChxdWFudGl0eSldKQogICAgICAgICAgICBlbGlmIGF0b206CiAgICAgICAgICAgICAgICB0bXBMaXN0LmFwcGVuZChbYXRvbSwgMV0pCiAgICAgICAgZWxpZiBub3QgaW5CcmFja2V0cyBhbmQgdG1wTGlzdCBhbmQgbXVsdGlwbGU6CiAgICAgICAgICAgIGZvciBhLCBuIGluIHRtcExpc3Q6CiAgICAgICAgICAgICAgICBuICo9IGludChtdWx0aXBsZSkKICAgICAgICAgICAgICAgIGlmIGEgaW4gbkF0b206CiAgICAgICAgICAgICAgICAgICAgbkF0b21bYV0gKz0gbgogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBuQXRvbVthXSA9IG4KICAgICAgICAgICAgdG1wTGlzdCA9IFtdCiAgICAgICAgZWxzZToKICAgICAgICAgICAgaWYgYXRvbSBhbmQgbm90IHF1YW50aXR5OgogICAgICAgICAgICAgICAgbkF0b21bYXRvbV0gPSAxCiAgICAgICAgICAgIGVsaWYgYXRvbSBhbmQgcXVhbnRpdHk6CiAgICAgICAgICAgICAgICBuQXRvbVthdG9tXSA9IGludChxdWFudGl0eSkKCiAgICBwcmludChjaGVtaWNhbEZvcm11bGEpCiAgICBmb3Iga2V5LCB2YWx1ZSBpbiBuQXRvbS5pdGVtcygpOgogICAgICAgIHByaW50KCd7fToge30nLmZvcm1hdChrZXksIHZhbHVlKSkKICAgIHByaW50KCctLS0tLS0nKQoKaSA9IGlucHV0KCkKbnVtYmVyX2F0b20oaSk=