# vim:set sts=4 sw=4 et: from sys import stdin class Node: def __init__(self): self.barn = {} self.posi = [] def bygg(ordliste): def cb(root, word, index, pos): if word[index] not in root.barn: root.barn[word[index]] = Node() if index == len(word)-1: root.barn[word[index]].posi.append(pos) return cb(root.barn[word[index]], word, index+1, pos) root = Node() for ord, pos in ordliste: cb(root, ord, 0, pos) return root def posisjoner(ord, indeks, node): if ord[indeks] == "?": result = [] if indeks == len(ord)-1: for v in node.barn.itervalues(): result.extend(v.posi) return result for v in node.barn.itervalues(): result.extend(posisjoner(ord, indeks+1, v)) return result if ord[indeks] in node.barn: if indeks == len(ord)-1: return node.barn[ord[indeks]].posi else: return posisjoner(ord, indeks+1, node.barn[ord[indeks]]) else: return [] ord = stdin.readline().split() ordliste = [] pos = 0 for o in ord: ordliste.append( (o,pos) ) pos += len(o) + 1 toppnode = bygg(ordliste) for sokeord in stdin: sokeord = sokeord.strip() print sokeord + ":", posi = posisjoner(sokeord, 0, toppnode) posi.sort() for p in posi: print p, print