#!/usr/bin/env python3 # Author: Ríša Hladík def intline(): """Načte řádek ze vstupu, rozdělí ho podle mezer, každou část převede na číslo, a výsledek vrátí jako seznam.""" return [int(a) for a in input().split()] O, V = intline() odbocovaci = [] for _ in range(O): # Přeskočíme údaj o délce řetězce, v Pythonu ho nepotřebujeme: input() odbocovaci.append(input()) vraceci = [] for _ in range(V): input() vraceci.append(input()) input() text = input() zanoreni = 0 vystup = [] # enumerate(seznam) vrací postupně (0, seznam[0]), (1, seznam[1]), …, for i, c in enumerate(text): for odb in odbocovaci: # Začíná na pozici i odbočovací vráze odb? Pokud už by se do textu na # této pozici nevešla, tak ji rovnou přeskočíme. if i + len(odb) < len(text) and text[i : i + len(odb)] == odb: zanoreni += 1 break for vra in vraceci: # Končí na pozici i vracecí vráze vra? Pokud by se do textu na # této pozici nevešla, tak ji rovnou přeskočíme. if i - len(vra) >= 0 and text[i - len(vra) : i] == vra: zanoreni -= 1 break if zanoreni == 0: vystup.append(c) # vystup je seznam znaků (protože do řetězce neumíme přidávat znak po znaku), # "".join ho poslepuje dohromady. vystup = "".join(vystup) print(vystup)