#!/usr/bin/env python

import itertools
import re
import sys
from typing import Dict, List


def parse_rule(raw_rules: List[str]) -> str:
    parsed: Dict[int, str] = {}
    rules = {int(num): rule.strip() for num, rule in (i.split(":") for i in raw_rules)}

    for n, r in rules.items():
        if '"' not in r:
            continue
        parsed[n] = r.replace('"', "")

    while 0 not in parsed:
        for num in parsed:
            if num not in rules:
                continue
            rules.pop(num)

        for num, r in rules.items():
            nums = list(reversed(sorted(map(int, re.findall("(\\d+)", r)))))
            if all(n in parsed for n in nums):
                for n in nums:
                    r = re.sub(str(n), parsed[n], r)  # Bigger numbers replaced first
                r = r.replace(" ", "{x}" if num == 11 else "")
                if num == 11:
                    r = "(" + r + "{x})"
                r = "(" + r + ")"
                if num == 8:
                    r = "(" + r + "+)"
                parsed[num] = r
    return parsed[0]


def solve(raw: List[str]) -> int:
    pattern = parse_rule(list(itertools.takewhile(len, raw)))

    def matches(repeats: int) -> int:
        pat = re.compile(pattern.replace("x", str(repeats)))
        return sum(
            pat.fullmatch(line) is not None for line in itertools.dropwhile(len, raw)
        )

    return sum(itertools.takewhile(bool, map(matches, itertools.count(1))))


def main() -> None:
    input = [line.strip() for line in sys.stdin.readlines()]
    print(solve(input))


if __name__ == "__main__":
    main()