def parsiraj_tablicu_KA(tablica):
    """Parsiranje tabličnog zapisa konačnog automata (Sipser page 36).
    Prvo stanje je početno, završna su označena znakom # na kraju reda."""
    prva, *ostale = tablica.strip().splitlines()
    znakovi = prva.split()
    assert all(len(znak) == 1 for znak in znakovi)
    abeceda = set(znakovi)
    stanja, završna = set(), set()
    prijelaz, početno = {}, None
    for linija in ostale:
        stanje, *dolazna = linija.split()
        if početno is None: početno = stanje
        extra = len(dolazna) - len(znakovi)
        assert extra in {0, 1}
        if extra == 1:
            assert dolazna.pop() == '#'
            završna.add(stanje)
        for znak, dolazno in zip(znakovi, dolazna):
            prijelaz[stanje, znak] = dolazno
        stanja.add(stanje)
    return stanja, abeceda, prijelaz, početno, završna