def parse(inFile):
    words = inFile.getWords()
    C = int(words[0])
    combinations = words[1:(C+1)]
    D = int(words[C+1])
    oppositions = words[C+2:(C+D+2)]
    return (combinations, oppositions, words[C+D+3])

def solve((combinations, oppositions, word)):
    cs = {}
    for combo in combinations:
        cs[combo[:2]] = combo[2]
        cs[combo[1]+combo[0]] = combo[2]
    os = set([])
    for oppo in oppositions:
        os.add(oppo)
        os.add(oppo[::-1])
    data = []
    for letter in word:
        if len(data) == 0:
            data = [letter]
        else:
            if (data[-1] + letter) in cs:
                data += [letter]
                while (len(data) > 1 and data[-2]+data[-1] in cs):
                    data = data[:-2] + [cs[data[-2]+data[-1]]]
            elif len([1 for datum in data if (datum + letter) in os]):
                data = []
            else:
                data.append(letter)
    return str(data).replace("'","")

if __name__ == "__main__":
    from GCJ import GCJ
    GCJ(parse, solve, "/Users/lpebody/gcj/2011_q/", "b").run()

            
