ANCIENT Uždavinys sprendžiamas generuojant visus variantus bei taikant dinaminį programavimą, kad neperskaičiuoti visko iš naujo. Sudaroma dinaminė lentelė lent[i1, r, i2, i3, i4, i5]; Ji reiškia, variantų skaičių, keliais galima užbaigti užpildyti frazę, jei: - jau užpildyta iki i1-osios raidės imtinai; - i1-oji raidė yra r; Skaičiuojant nuo i1-osios raidės atgal (mums neįdomu kas darosi žodžio pradžioje tik tai kas ties pabaiga, t.y. ties ta vieta, nuo kur reikės pildyto toliau) yra - i2 vienodų iš eilės einančių priebalsių - i3 iš eilės einančių priebalsių - i4 vienodų iš eilės einančių balsių - i5 iš eilės einančių balsių Pavyzdžiui, pradinė frazė **y*af** Rekursiniu būdu ją užpildėme iki aayb, t.y. i1=4, r='b', i2=1 (baigiasi viena vienoda priebalse 'b') i3=2 (baigiasi dviem priebalsėm 'yb'); i4=0 (balsių gale nėra); i5=0; Vietoj visų * bandome įstatyti visas įmanomas raides nuo 'a' iki 'z'. Įstatę kiekvieną raidę patikriname ar tai galima padaryti (t.y. ar neviršijamos nustatytos normos). Ir pildome lentelę. Jei reikšmę galime pasižiūrėti iš lentelės, imame ją iš ten. O jei ne - ji apskaičiuojama rekursiškai ir išsaugoma lentelėje.