class Node: def __init__(self): self.cnt = 0 def insert(root, s: str, start: int): cur = root for i in range(10): # 最大10文字まで p = i + start if p >= len(s): break c = s[p] if c not in cur: cur[c] = [Node(), {}] node, children = cur[c] node.cnt += 1 cur = children def traverse(root, s: str): cur = root for i, c in enumerate(s): if c not in cur: return 0 node, children = cur[c] if i+1 == len(s): return node.cnt cur = children assert False INF = 1 << 60 S = input() M = int(input()) C = [input() for _ in range(M)] trie = {} for i in range(len(S)): # i 番目から最大 10 文字までトライ木に登録する insert(trie, S, i) ans = sum([traverse(trie, c) for c in C]) print(ans)