import sys


def addToLevel(name, levelwise, level, number):
    if(name.strip()):
        if(number == 0):
            number = 1
        levelwise[level][name] = number


def atomprinter(atoms):
    for atom in atoms:
        print(atom + ": " + str(atoms[atom]))


def getNumber(formula, start):
    number = 0
    for index in range(start, len(formula)):
        if(formula[index].isdigit()):
            number = number * 10 + int(formula[index])
        else:
            return number, index
    return number, index + 1


def getElement(formula, start):
    if start == len(formula) - 1:
        return formula[start], len(formula)
    if(formula[start + 1].islower()):
        return formula[start:start + 2], start + 2
    else:
        return formula[start], start + 1


def mergeLevel(levelWise, level, number):
    if(number == 0):
        number = 1
    previous = levelWise[level - 1]
    current = levelWise[level]
    for key in current:
        if(key in previous):
            previous[key] += (number * current[key])
        else:
            previous[key] = current[key] * number
    levelWise.pop(level)
    return levelWise


def atomfinder(formula):
    formula = formula.strip()
    levelwise = {}
    levelwise[0] = {}
    level = 0
    name = ''
    number = 0
    index = 0
    while index >= 0 and index < len(formula):
        char = formula[index]
        if(char == '('):
            addToLevel(name, levelwise, level, number)
            name = ''
            level += 1
            levelwise[level] = {}
            index += 1
        elif(char == ')'):
            addToLevel(name, levelwise, level, number)
            number = 0
            name = ''
            if(index < len(formula) - 1):
                if(formula[index + 1].isdigit):
                    number, index = getNumber(formula, index + 1)
                else:
                    index += 1
            else:
                index += 1
            levelwise = mergeLevel(levelwise, level, number)
            level -= 1
        elif(char.isupper()):
            addToLevel(name, levelwise, level, number)
            name = ''
            number = 0
            name, index = getElement(formula, index)
        elif(char.isdigit()):
            number, index = getNumber(formula, index)
    addToLevel(name, levelwise, level, number)
    atomprinter(levelwise[0])


def main():
    for formula in sys.stdin:
        atomfinder(formula.strip())

if __name__ == '__main__':
    main()