Esistono molti modi diversi di approcciarsi alla risoluzione di un problema. In base alla propria astuzia, alle proprie conoscenze algoritmiche, matematiche, statistiche, al proprio buonsenso, è possibile elaborare strategie sempre più raffinate.

Oggi invece siamo pigri. Supponiamo di essere in assoluto il più pigro studente che sia mai esistito. E supponiamo che il problema che dobbiamo risolvere sia imparare un frammento dell’Amleto di Shakespeare. Il frammento in questione è una semplice frase di Amleto: Parmi somigli ad una donnola Dato che siamo mostruosamente pigri siamo stati affiancati ad un insegnante, profumatamente pagato per aiutarci a svolgere il nostro compito ma purtroppo altrettanto pigro. Sforzarsi di imparare la frase che ci è stata assegnata è fuori questione. Perché non cominciare provando a buttare là frasi a caso e vedere come va? Alla fine se delle scimmie che premono tasti a caso su una macchina da scrivere possono riscrivere tutte le opere di Shakespeare perché non possiamo farcela noi con una sola frase? Una normale persona probabilmente metterebbe insieme delle parole che l’autore potrebbe aver usato ma non vogliamo dare alle scimmie nostre rivali alcun handicap e quindi cominciamo a dire lettere a caso.

Nello specifico selezioniamo un numero di lettere casuali, pari alla lunghezza della frase che vogliamo imparare e lo proponiamo al nostro insegnante, il quale, pigro quanto noi, si limita a dirci quante lettere abbiamo azzeccato. Quello che facciamo in pratica è:


In [93]:
import random
import string

def random_char():
    return random.choice(string.ascii_lowercase + ' ')
def genera_frase():
    return [random_char() for n in range(0,len(amleto))]
amleto = list('parmi somigli ad una donnola')
print("target= '"+''.join(amleto)+"'")
frase = genera_frase()
print(str(frase)+" = '"+''.join(frase)+"'")


target= 'parmi somigli ad una donnola'
['c', 'f', 'x', 'x', 'z', 'g', 'w', 'y', 'i', 'u', 't', ' ', 'o', 'c', 'h', 'o', 'k', 'p', 'a', 'i', 'y', 'i', 'y', 'r', 'g', 'x', 's', 'm'] = 'cfxxzgwyiut ochokpaiyiyrgxsm'

E poi proporre la nostra frase all’insegnante il quale si limita a:


In [94]:
def valuta( candidato ):
        azzeccate = 0
        for (lettera1, lettera2) in zip(candidato, amleto):
            if lettera1 == lettera2:
                azzeccate = azzeccate + 1
        return azzeccate

risposta = valuta(frase)
print(risposta)


0

Ben presto ci accorgiamo di quanta pazienza devono avere le scimmie, dopo 100000 tentativi (saremo pur pigri ma anche molto tenaci) abbiamo azzeccato appena 8 lettere su 28: “vfgoyflcmorpiisd untmsonqcji” “parmi somigli ad una donnola” Un risultato non proprio stellare. Abbiamo 28 lettere da azzeccare, per ognuna abbiamo 27 scelte ('abcdefghijklmnopqrstuvwxyz '), il che vuol dire che la nostra probabilità di azzeccare tirando a caso è una su $27^{28}$ cioè circa: 0.00000000000000000000000000000000000000008
Mentre proponiamo la 1000001-esima frase pensiamo tra noi che sarebbe bello non dover ricominciare da capo ogni volta, che magari ora che abbiamo una frase con 8 lettere corrette sarebbe bello poter migliorarla invece di buttarla via e ricominciare. Se solo il nostro insegnante fosse così gentile da dirci quali sono le lettere che abbiamo azzeccato oltre che quante, finiremmo in un attimo. Vabbè, cerchiamo comunque di provarci, invece di buttare via la nostra frase ogni volta proviamo a tenerla e cambiare una lettera cercando di ottenere risultati sempre migliori:


In [95]:
def altera(vecchia_frase):
    posizione_da_cambiare = random.choice(range(0,len(vecchia_frase)))
    lettera_da_cambiare = vecchia_frase[posizione_da_cambiare]
    alternative = (string.ascii_lowercase + ' ').replace(lettera_da_cambiare,'')
    nuova_frase = list(vecchia_frase)
    nuova_frase[posizione_da_cambiare] = random.choice(alternative)
    return nuova_frase

i=0
miglior_frase = [random_char() for n in range(0,len(amleto))]
miglior_risultato = valuta(miglior_frase)
while(miglior_risultato < len(amleto)):
    frase = altera(miglior_frase)
    risposta = valuta(frase)
    i = i+1
    if risposta > miglior_risultato:
        miglior_risultato = risposta
        miglior_frase = frase
        print(str(i)+':\t"'+''.join(miglior_frase)+'"\t'+str(miglior_risultato))


38:	"ixblkmshfresrvycedrmvdr rgnj"	2
71:	"ixblkmshfresrvycedravdr rgnj"	3
99:	"ixblkmshfresrvycednavdr rgnj"	4
140:	"ixblkmshfrgsrvycednavdr rgnj"	5
143:	"ixblkmshfrglrvycednavdr rgnj"	6
169:	"ixblk shfrglrvycednavdr rgnj"	7
207:	"ixblk shfrglr ycednavdr rgnj"	8
292:	"iablk shfrglr ycednavdr rgnj"	9
370:	"iablk shmrglr ycednavdr rgnj"	10
421:	"iablk shmrglr ycednavdr ngnj"	11
488:	"iablk shmiglr ycednavdr ngnj"	12
509:	"iablk shmiglr ycednavdr nglj"	13
590:	"pablk shmiglr ycednavdr nglj"	14
650:	"pablk shmiglr yceunavdr nglj"	15
738:	"pablk shmiglr yceunavdrnnglj"	16
796:	"pablk somiglr yceunavdrnnglj"	17
815:	"pablk somiglr yceunavdonnglj"	18
893:	"parlk somiglr yceunavdonnglj"	19
1033:	"parlk somiglr yceunavdonngla"	20
1237:	"parlk somiglr yceuna donngla"	21
1280:	"parlk somigli yceuna donngla"	22
1297:	"parmk somigli yceuna donngla"	23
1358:	"parmk somigli aceuna donngla"	24
1712:	"parmk somigli ac una donngla"	25
1982:	"parmk somigli ad una donngla"	26
2466:	"parmk somigli ad una donnola"	27
2476:	"parmi somigli ad una donnola"	28

Con questa semplice modifica siamo in grado di imparare la frase corretta in appena qualche migliaio di tentativi. Circa tremila tentativi è decisamente un risultato molto migliore di prima! Certo che però provarle una alla volta è un po’ noioso, perché non proviamo invece a proporne di più allo stesso tempo? Proviamo a proporne 100 in un colpo solo:


In [96]:
def migliore(candidati):
    ordinati = sorted(candidati,key=lambda tup: tup[1], reverse=True)
    return ordinati[0]

def genera_candidati(num_candidati):
    candidati = []
    for i in range(0,num_candidati):
        tmp_frase = genera_frase()
        tmp_risposta = valuta(tmp_frase)
        candidati.append((tmp_frase,tmp_risposta))
    return candidati

candidati = genera_candidati(100)
i=0
miglior_frase, miglior_risultato = migliore(candidati)
while(miglior_risultato < len(amleto)):
    i = i+1
    for n in range(0,len(candidati)):
        frase,risposta = candidati[n]
        nuova_frase = altera(frase)
        nuova_risposta = valuta(nuova_frase)
        if nuova_risposta > risposta:
            candidati[n] = (nuova_frase,nuova_risposta)
        if nuova_risposta > miglior_risultato:
            miglior_risultato = nuova_risposta
            miglior_frase = nuova_frase
            print(str(i)+':\t"'+''.join(miglior_frase)+'"\t'+str(miglior_risultato))


15:	"xorsdpsecxrln cpduuqbzqnhfie"	6
42:	"xorsdpsocxrln cpduuqbzqnhfie"	7
65:	"xorsdpsocxrln cp uuqbzqnhfie"	8
72:	"xorsdpsocirln cp uuqbzqnhfie"	9
83:	"xorsdpsocirln cp uuq zqnhfie"	10
107:	"xorsdpsocirln cp uuq zqnhfle"	11
129:	"xorsdpsocirln cp uua zqnhfle"	12
175:	"xorsipsocirln cp uua zqnhfle"	13
204:	"xorsipsocirln cp uua zqnnfle"	14
258:	"xorsipsocirln cp uua zqnnole"	15
261:	"xorsipsocigln cp uua zqnnole"	16
320:	"porsipsocigln cp uua zqnnole"	17
429:	"pavyi smmigli gs orj gonnoba"	18
438:	"pavyi smmigli gs ora gonnoba"	19
439:	"pavyi smmigli gs ura gonnoba"	20
566:	"pavyi smmigli gs ura gonnola"	21
567:	"paryi smmigli gs ura gonnola"	22
710:	"padmi somrgli sm una donnnla"	23
754:	"parjv somigli ao una dondola"	24
835:	"padmi somigli sd una donnnla"	25
999:	"padmi somigli sd una donnola"	26
1122:	"par i somigli ad una donnola"	27
1400:	"parmi somigli ad una donnola"	28

Wow ora sono riuscito a scendere attorno al migliaio, ma ho davvero guadagnato qualcosa in termini di numero di tentativi necessari? Alla fine ora faccio 100 tentativi alla volta, perchè non ci metto 100 volte meno? In effetti è sleale contare il numero di volte che passo i miei tentativi all’insegnante, dovrei contare invece quante volte l’insegnante valuta i miei tentativi! Vediamo un po’:


In [97]:
def valuta( candidato ):
        global valutazioni
        valutazioni = valutazioni + 1
        azzeccate = 0
        for (lettera1, lettera2) in zip(candidato, amleto):
            if lettera1 == lettera2:
                azzeccate = azzeccate + 1
        return azzeccate

def prova_piu_frasi_insieme(num_frasi):
    global valutazioni
    valutazioni = 0
    i=0
    candidati = genera_candidati(num_frasi)
    miglior_frase, miglior_risultato = migliore(candidati)
    while(miglior_risultato < len(amleto)):
        i = i+1
        for n in range(0,len(candidati)):
            frase,risposta = candidati[n]
            nuova_frase = altera(frase)
            nuova_risposta = valuta(nuova_frase)
            if nuova_risposta > risposta:
                candidati[n] = (nuova_frase,nuova_risposta)
            if nuova_risposta > miglior_risultato:
                miglior_risultato = nuova_risposta
                miglior_frase = nuova_frase
                print(str(i)+':\t"'+''.join(miglior_frase)+'"\t'+str(miglior_risultato))
    print('Valutazioni totali: '+str(valutazioni))
    
prova_piu_frasi_insieme(100)


4:	"ahmliqwqfiwdbpjvbunu hier va"	6
9:	"arrso vyrghrpuntumta econolx"	7
10:	"arrso vyrggrpuntumta econolx"	8
36:	"arrso vyrggrpuatumta econolx"	9
69:	"arrso vyrggrpuat mta econolx"	10
103:	"arrso vyrggrpuad mta econolx"	11
150:	"lsx i zflpgfuxme nnajdennola"	12
177:	"psx i zflpgfuxme nnajdennola"	13
180:	"psx i zflpgfuxmd nnajdennola"	14
270:	"pzmmu soliglmpcg unqwxopnoha"	15
300:	"pbrmgtsofeglcba  anc ronno a"	16
349:	"pbrmgtsofeglcba  anc donno a"	17
366:	"paoii svmiwbxbat uns doncola"	18
387:	"paoii svmiwbxbat una doncola"	19
388:	"paoii svmiwbx at una doncola"	20
419:	"paoii svmiwbx at una donnola"	21
430:	"paoii svmiwbi at una donnola"	22
577:	"phrmi lomigle ad una sonlola"	23
654:	"paomi svmigbi at una donnola"	24
820:	"phrmi somigle ad una donlola"	25
958:	"varmi somigli adluna donnola"	26
965:	"varmi somigli ad una donnola"	27
1141:	"parmi somigli ad una donnola"	28
Valutazioni totali: 114200

Diamine! Sì, è vero che ci metto circa un terzo delle iterazioni adesso ma quel poveretto del mio insegnante deve valutare uno sproposito di tentativi in più! circa 130000! Mentre prima quando gli proponevo una frase alla volta ne bastavano circa 3000. E dal momento che devo aspettare che lui abbia finito prima di poter provare nuove frasi mi sto tirando la zappa sui piedi! Inoltre cos’è questo macello nei miei tentativi inziali? Come possono cambiare così tanto l’uno dall’altro? Io modifico solo una lettera per volta! Aspetta… ah già, dal momento che ho molte frasi contemporaneamente può essere che alcune di loro abbiano trovato alcune lettere corrette ma che siano state battute in velocità da altre alcune iterazioni dopo. Alla fine mi curo solo di chi è il miglior candidato, se per caso qualche suo rivale riesce a trovare anche solo una lettera in più il mio povero campione viene gettato nel dimenticatoio. Ma perchè sul finale le cose sembrano molto più “uniformi” come me le aspettavo? Mmmm… potrebbe essere che all’inizio fosse facile migliorare il proprio risultato dato che la maggior parte delle lettere erano sbagliate. Sul finale invece solo una o due lettere sono sbagliate quindi è difficile progredire, bisogna sia avere la fortuna di azzeccare la posizione giusta che la lettera mancante! Forse è meglio se do un occhio a cosa succede alle mie frasi oltre che al campione:


In [98]:
import pprint
pp = pprint.PrettyPrinter()
def stampa_candidati(candidati):
    # candidati -> array di char, li trasformo in stringhe con ''.join(...)
    # [' ', 'x', 'p', 'l', 'f', … ,'d', 'z', 'h', 'f'] -> ' xplfrvvjjvnmzkovohltroudzhf'
    stringhe_e_valori = list(map(lambda x : (''.join(x[0]),x[1]), candidati))
    # per comodità ordino le stringhe in base al numero di lettere corrette, decrescente
    stringhe_ordinate = sorted(stringhe_e_valori,key=lambda tup: tup[1], reverse=True)
    pp.pprint(stringhe_ordinate)
stampa_candidati(genera_candidati(10))


[('xktlybaunjdoptpnkanfavqepofo', 2),
 ('upimoitniasy stjxduttgqiidpl', 1),
 ('nzcwjefayqbknovijemanawszint', 1),
 ('rqusswassibffzvjhdw enipiv p', 1),
 ('zsqilwb jamhibkslzaefzpkeeoc', 1),
 ('hqxmlcvvthuwjcwsxhiqgp tixif', 1),
 ('s bccheqrzmsjopfvtglhmzkwhlu', 1),
 ('zmlkolrgesdgyywjkrdldosse dw', 0),
 ('xzijjgdzxmudsdusfgpilbgvfmaw', 0),
 ('qyqlyvydapsfahrjsvmybpfhaw l', 0)]

Proviamo a vedere cosa succede ai nostri candidati quando ne considero 10 alla volta:


In [99]:
def prova_piu_frasi_insieme(num_frasi):
    global valutazioni
    valutazioni = 0
    i=0
    candidati = genera_candidati(num_frasi)
    miglior_frase, miglior_risultato = migliore(candidati)
    while(miglior_risultato < len(amleto)):
        i = i+1
        for n in range(0,len(candidati)):
            frase,risposta = candidati[n]
            nuova_frase = altera(frase)
            nuova_risposta = valuta(nuova_frase)
            if nuova_risposta > risposta:
                candidati[n] = (nuova_frase,nuova_risposta)
            if nuova_risposta > miglior_risultato:
                miglior_risultato = nuova_risposta
                miglior_frase = nuova_frase
                print(str(i)+':\t"'+''.join(miglior_frase)+'"\t'+str(miglior_risultato))
                stampa_candidati(candidati)
    print('Valutazioni totali: '+str(valutazioni))
    
prova_piu_frasi_insieme(10)


3:	"vaolovbodpnei vcjiijidcfaqib"	5
[('vaolovbodpnei vcjiijidcfaqib', 5),
 (' pbczuemtkksjcvfwrvy  kglalp', 2),
 ('bsdhrasaupoifdqpdwzr qnlczjl', 2),
 ('eocfi cznxdvexgbi lvscaaiqoq', 2),
 ('jkoamjeqgmfunjo  cjnplagmyhq', 1),
 ('wmikitkmpkyyjsbtanmibpmgtqrk', 1),
 ('ogvktuph njgqftydseeawlnuhew', 1),
 ('kqwmzlaeuyrvhyhwgebte cmx gg', 1),
 ('tzwolmzhojqcpljqwpgkncfww dq', 0),
 ('ymkbbiewpulzfs jwfpskmtpiznu', 0)]
32:	"varlovbodpnei vcjiijidcfaqib"	6
[('varlovbodpnei vcjiijidcfaqib', 6),
 (' pbmzuemtkksjcvfwrvy  knlalp', 4),
 ('pqwmzlaeuyrlhyhwgebte cmx gg', 3),
 ('bsdhrasaupgifdqpdwzr qnlczjl', 3),
 ('jkoamjeqgmfun o  cjnplagmyhq', 2),
 ('wmikitkmpiyyjsbtanmibpmgtqrk', 2),
 ('ogvktuph njgqftydseeawonuhew', 2),
 ('eocfi cznxdvexgbi lvscaaiqoq', 2),
 ('ymrbbiewpulzfs jwfpskmtpiznu', 1),
 ('tzwolmzhojqcpljqwpgkncfww dq', 0)]
40:	"varlovbodpnei vcjiijidcfaqlb"	7
[('varlovbodpnei vcjiijidcfaqlb', 7),
 (' pbmzuemtkksjcvfwrvy  knlalp', 4),
 ('pgvktuph njgqftydseeawonuhew', 3),
 ('pqwmzlaeuyrlhyhwgebte cmx gg', 3),
 ('bsdhrasaupgifdqpdwzr qnlczjl', 3),
 ('eocfi cznxdvexgbi nvscaaiqoq', 3),
 ('jkoamjeqgmfun o  cjnplagmyhq', 2),
 ('wmikitkmpiyyjsbtanmibpmgtqrk', 2),
 ('ymrbbiewpulzfs jwfps mtpiznu', 2),
 ('tzwolmzhojqcpljqwpgkncfww dq', 0)]
43:	"varlovbodpnei vcjiijidcfnqlb"	8
[('varlovbodpnei vcjiijidcfnqlb', 8),
 (' pbmzuemtkksjcvfwrvy  knlalp', 4),
 ('pgvktuph njgqftydseeawonuhew', 3),
 ('pqwmzlaeuyrlhyhwgebte cmx gg', 3),
 ('bsdhrasaupgifdqpdwzr qnlczjl', 3),
 ('eocfi cznxdvexgbi nvscaaiqoq', 3),
 ('jkoamjeqgmfun o  cjnplagmyhq', 2),
 ('wmikitkmpiyyjsbtanmibpmgtqrk', 2),
 ('ymrbbiewpulzfs jwfps mtpiznu', 2),
 ('tzwolmzhojqcpljqwpgkncfww dq', 0)]
75:	"varlovbodpnei vc iijidcfnqlb"	9
[('varlovbodpnei vc iijidcfnqlb', 9),
 ('pqwmzlaeuyrlhyhwgente cmxogg', 5),
 ('wmikitkmpiyyisbtannibpmgtqrk', 4),
 ('pgvktuph njgqftydseeawonuoew', 4),
 (' pbmzuemtkksjcvfwrvy  knlalp', 4),
 ('bsdhrasaupgifdqddwzr qnlczjl', 4),
 ('eocfi cznxdvixgbi nvscaaiqoq', 4),
 ('yarbbiewpulzfs jwfps mtpiznu', 3),
 ('jkoamjeqgmfun o  cjnplagmyhq', 2),
 ('tzwolmzhojqcpljqwpgkncfww dq', 0)]
86:	"varlovbodpnei vc iijidcfnolb"	10
[('varlovbodpnei vc iijidcfnolb', 10),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6),
 (' pbmzuemtkksj vfwrvy  knlalp', 5),
 ('wmikitkmpiyyisbtannibpmgtqrk', 4),
 ('pgvktuph njgqftydseeawonuoew', 4),
 ('bsdhrasaupgifdqddwzr qnlczjl', 4),
 ('eocfi cznxdvixgbi nvscaaiqoq', 4),
 ('yarbbiewpulzfs jwfps mtpiznu', 3),
 ('jkoamjeqgmfun o  cjnplagmyhq', 2),
 ('tzwolmzhojqcpljqwpgkncfww dq', 0)]
89:	"varlovbodinei vc iijidcfnolb"	11
[('varlovbodinei vc iijidcfnolb', 11),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6),
 ('wmikitkmpiyyisbtannibpogtqrk', 5),
 (' pbmzuemtkksj vfwrvy  knlalp', 5),
 ('bsdhrasampgifdqddwzr qnlczjl', 5),
 ('pgvktuph njgqftydseeawonuoew', 4),
 ('eocfi cznxdvixgbi nvscaaiqoq', 4),
 ('yarbbiewpulzfs jwfps mtpiznu', 3),
 ('jkoamjeqgmfun o  cjnplagmyhq', 2),
 ('tzwolmzhojqcpljqwpgkncfwn dq', 1)]
129:	"varlovbodinei vc iiaidcfnolb"	12
[('varlovbodinei vc iiaidcfnolb', 12),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6),
 ('eocfi cznxdlixgbiunvscaaiqoq', 6),
 ('wmikitkmpiyyisbtannibpogtqrk', 5),
 ('pgvkiuph njgqftydseeawonuoew', 5),
 (' pbmzuemtkksj vfwrvy  knlalp', 5),
 ('bsdhrasampgifdqddwzr qnlczjl', 5),
 ('jkoamjeqgmfun o  cnnplagmyhq', 3),
 ('yarbbiewpulzfs jwfps mtpiznu', 3),
 ('tzwolmzhojqcpljqwpgkncfwn dq', 1)]
164:	"varlovbodigei vc iiaidcfnolb"	13
[('varlovbodigei vc iiaidcfnolb', 13),
 ('wmikitkmpigyisbtannibpogtqrk', 6),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6),
 ('bsdhrasampgifdqddwnr qnlczjl', 6),
 ('eocfi cznxdlixgbiunvscaaiqoq', 6),
 ('pgvkiuph njgqftydseeawonuoew', 5),
 (' pbmzuemtkksj vfwrvy  knlalp', 5),
 ('jkoamjeqgmfun o  cnnplagmyhq', 3),
 ('pzwolmzhojqcpljqwpgancfwn dq', 3),
 ('yarbbiewpulzfs jwfps mtpiznu', 3)]
165:	"varlovbodigei vd iiaidcfnolb"	14
[('varlovbodigei vd iiaidcfnolb', 14),
 ('wmikitkmpigyisbtannibpogtqrk', 6),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6),
 ('bsdhrasampgifdqddwnr qnlczjl', 6),
 ('eocfi cznxdlixgbiunvscaaiqoq', 6),
 ('pgvkiuph njgqftydseeawonuoew', 5),
 (' pbmzuemtkksj vfwrvy  knlalp', 5),
 ('jkoamjeqgmfun o  cnnplagmyhq', 3),
 ('pzwolmzhojqcpljqwpgancfwn dq', 3),
 ('yarbbiewpulzfs jwfps mtpiznu', 3)]
205:	"parlovbodigei vd iiaidcfnolb"	15
[('parlovbodigei vd iiaidcfnolb', 15),
 ('pgrki ph njgqftydseeawonuoew', 7),
 (' pbmz emtkksj vfwrvy  knlala', 7),
 ('eocfi cznxdlixgbiunv caaiqoq', 7),
 ('jkoamjeqgifui o  unnplagmyhq', 6),
 ('wmikitkmpigyisbtannibpogtqrk', 6),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6),
 ('bsdhrasampgifdqddwnr qnlczjl', 6),
 ('yarbbiswpulzfsajwfps mtpiznu', 5),
 ('pzwolmzhmjqcpljqwpgancfwn dq', 4)]
235:	"parlovbodigei ad iiaidcfnolb"	16
[('parlovbodigei ad iiaidcfnolb', 16),
 ('jkoamjeqgigui od unnplagmyhq', 8),
 ('eorfi cznxdlixgbiunv caaiqoq', 8),
 ('wmrkitkmpigyisbtannibpogtqrk', 7),
 ('pgrki ph njgqftydseeawonuoew', 7),
 (' pbmz emtkksj vfwrvy  knlala', 7),
 ('yarbbiswpulzfsadwfps mtpizlu', 7),
 ('bsdhrasampgifdqddwnr dnlczjl', 7),
 ('pzwolmzhmiqcpljqwpga cfwn dq', 6),
 ('pqwmzlseuyrlhyhwgente cmxogg', 6)]
351:	"parlovbodigei ad iiaidcfnola"	17
[('parlovbodigei ad iiaidcfnola', 17),
 ('jkramjsqgigui od unnplonmyha', 13),
 ('yarbb swpigzfsad fns mtpizlu', 12),
 (' pbmz emtigsj vdwrvy  knnala', 11),
 ('pzwol zomiqcpljd pga cfwnodq', 11),
 ('bsdhiasamigifdqddunr dnlczjl', 10),
 ('eormi cznxdlixgb unv caaiqoq', 10),
 ('wmrmitkmpigyisbtannibpogtork', 9),
 ('pqwmzlseuyrlhyhwgent  cmnolg', 9),
 ('pgrki phmnjgqftydseeawonuoew', 8)]
448:	"parlovbodigei ad inaidcfnola"	18
[('parlovbodigei ad inaidcfnola', 18),
 ('jkramjsqgigli od unnplonmoha', 15),
 ('parol zomiqcp jd pga cfwnolq', 15),
 ('badhi samiglfdqddunr dnlnzll', 15),
 ('yarbb swpigzfsad fns dtpizlu', 13),
 (' pbmz smtigsj vdwrvy  knnala', 12),
 ('wmrmitkmpigyisbtannibdognork', 11),
 ('eormi conxdlixgb unv caaiqoq', 11),
 ('pgrmi phmnjgqftydseeawonuoew', 9),
 ('pqwmzlseuyrlhyhwgent  cmnolg', 9)]
490:	"parlo bodigei ad inaidcfnola"	19
[('parlo bodigei ad inaidcfnola', 19),
 ('jkramjsqgigli od unn lonmola', 17),
 ('parol zomiqlp jd pga cfwnola', 17),
 ('badhi samiglfdqddunr dnlnzll', 15),
 ('pmrmitkopigyisbtannibdognork', 13),
 (' pbmi smtigsj vdwrvy  knnala', 13),
 ('yarbb swpigzfsad fns dtpizlu', 13),
 ('eormi conxdlixab unv caaiqoq', 12),
 ('pgrmi phmnjgqftydsee wonuoew', 10),
 ('pqwmilseuyrlhyhwgent  cmnolg', 10)]
527:	"parlo sodigei ad inaidcfnola"	20
[('parlo sodigei ad inaidcfnola', 20),
 ('parml somiqlp jd pga cfwnola', 19),
 ('pkramjsqgigli od unn lonmola', 18),
 ('badhi samiglfdqddunr dnlnzll', 15),
 ('yarbb swmigzfsad fns dtpizlu', 14),
 ('pmrmitkopigyisbtannibdognork', 13),
 (' pbmi smtigsj vdwrvy  knnala', 13),
 ('eormi conxdli ab unv caaiqoq', 13),
 ('pqwmilsemyrlhyhwgent  cmnolg', 11),
 ('pgrmi phmnjgqftydsee wonuoew', 10)]
597:	"parli sodigei ad inaidcfnola"	21
[('parli sodigei ad inaidcfnola', 21),
 ('pkramjsogigli od unn lonnola', 20),
 ('parml somiqlp ad pga cfwnola', 20),
 ('yarbb swmigzfsad fns dtniola', 17),
 ('badhi samiglfdqddunr dnlnzll', 15),
 ('pmrmitkopigyisbtanni dognork', 14),
 ('eormi conxdli ab unv caaiooq', 14),
 (' pbmi smtigsj vdwrvy  knnala', 13),
 ('pawmilsemyrlhyhwgent dcmnolg', 13),
 ('pgrmi phmnjgqftydsee wonuolw', 11)]
712:	"pkrmmjsogigli od una lonnola"	22
[('pkrmmjsogigli od una lonnola', 22),
 ('parml somiqlp ad pna cfwnola', 21),
 ('parli sodigei ad inaidcfnola', 21),
 ('yarmb swmigzisad fna dtniola', 20),
 ('badhi somiglfdqddunr dnnnzll', 17),
 ('pmrmi kopigyisbdanni dognork', 16),
 ('parmilsemyrlh hdgent dcmnolg', 16),
 ('eormi sonxdli ab unv daaiooq', 16),
 ('pgrmi phmnjgqfty uee wonuola', 14),
 (' abmi smtigsj vdwrvy  knnala', 14)]
753:	"parli somigei ad inaidofnola"	23
[('parli somigei ad inaidofnola', 23),
 ('pkrmmjsogigli od una lonnola', 22),
 ('parml somiqlp ad pna cfwnola', 21),
 ('yarmb swmigzisad fna dtnnola', 21),
 ('badhi somiglfdqddunr dnnnzla', 18),
 ('pmrmi kopigyisbdanni donnork', 17),
 ('parmilsemyrlh adgent dcmnolg', 17),
 ('eormi sonxdli ab unv daaiooq', 16),
 ('pgrmi phmnjgifty uee wonuola', 15),
 (' abmi smtigsj vdwrvy  knnala', 14)]
783:	"parli somigei ad inaidonnola"	24
[('parli somigei ad inaidonnola', 24),
 ('pkrmijsogigli od una lonnola', 23),
 ('parml somiqli ad pna dfwnola', 23),
 ('yarmb swmigzisad fna dtnnola', 21),
 ('padhi somiglfdqddunr dnnnzla', 19),
 ('pmrmi kopigyisbdanni donnork', 17),
 ('parmilsemyrlh adgent dcmnolg', 17),
 ('pgrmi phmnjgifty uea wonuola', 16),
 ('eormi sonxdli ab unv daaiooq', 16),
 (' abmi smtigsj vdwuvy  knnala', 15)]
952:	"parml somigli ad una dfwnola"	25
[('parml somigli ad una dfwnola', 25),
 ('pkrmijsogigli od una donnola', 24),
 ('parli somigei ad inaidonnola', 24),
 ('parmb swmigzisad fna dtnnola', 22),
 ('padhi somiglfdqdduna donnzla', 21),
 ('parmilsemyrlh ad ent domnolg', 19),
 ('eormi somxgli ab unv daaiolq', 19),
 ('parmi pomnjgifty uea wonuola', 18),
 (' abmi sotigsj vdwuvy donnala', 18),
 ('pmrmi kopigyisbdanni donnork', 17)]
1096:	"pkrmijsomigli ad una donnola"	26
[('pkrmijsomigli ad una donnola', 26),
 ('parml somigli ad una dfwnola', 25),
 ('parli somigei ad unaidonnola', 25),
 ('parmb swmigzi ad fna dtnnola', 23),
 ('parmilsemirli ad ent donnola', 23),
 ('padhi somiglfdqd una donnzla', 22),
 ('parmi pomijgi td uea wonuola', 21),
 ('eormi somigli ab una daaiolq', 21),
 (' armi sotigsj vdwuny donnala', 20),
 ('pmrmi sopigyisbdanna donnork', 19)]
1256:	"pkrmi somigli ad una donnola"	27
[('pkrmi somigli ad una donnola', 27),
 ('parmi somiglj ad uny donnala', 25),
 ('parml somigli ad una dfwnola', 25),
 ('parli somigei ad unaidonnola', 25),
 ('parmi somiglfdqd una donnzla', 24),
 ('parmb swmigzi ad fna dtnnola', 23),
 ('parmilsemirli ad ent donnola', 23),
 ('parmi pomiggi td uea wonuola', 22),
 ('eormi somigli ab una daaiola', 22),
 ('pmrmi sopigyisbd nna donnora', 21)]
1560:	"parmi somigli ad una donnola"	28
[('parmi somigli ad una donnola', 28),
 ('pkrmi somigli ad una donnola', 27),
 ('parmi somiglj ad uny donnola', 26),
 ('parmi somigli ad una dfwnola', 26),
 ('parmi somiglidqd una donnzla', 25),
 ('parmi pomiggi td una wonnola', 24),
 ('parmb swmigzi ad fna donnola', 24),
 ('parmilsemirli ad ena donnola', 24),
 ('eormi somigli ad una daniola', 24),
 ('pmrmi sopigyisbd nna donnora', 21)]
Valutazioni totali: 15610

Eh sì è come pensavo, quello che era il mio campione ha fallito a trovare un miglioramento e quindi un suo rivale è passato in vantaggio! Ma perchè devono competere tra di loro! Io voglio solo trovare la frase che vuole l’insegnante, se collaborassero sarebbe molto più semplice... Posso far si che condividano le parti corrette che ognuno di loro ha trovato? Diamine se solo sapessi quali sono! Maledetto insegnante che mi dici solo quante lettere azzecco. Mmmm e se facessi mescolare tra di loro le varie frasi sperando che mettano insieme le parti corrette che hanno trovato? Potrei prendere due frasi a caso e costruirne una nuova prendendo lettere da una o l’altra. Sì, sembra una buona idea, alla fine se entrambe le frasi hanno trovato una lettera giusta non importa da chi pesco, la nuova frase avrà senz’altro quella lettera, almeno posso star tranquillo che non rovinerò le soluzioni che trovano!


In [100]:
def mescola(frase1, frase2):
    nuova_frase = []
    for i in range(0,len(frase1[0])):
        if random.random() > 0.5:
            nuova_frase.append(frase1[0][i])
        else:
            nuova_frase.append(frase2[0][i])
    return (nuova_frase,valuta(nuova_frase))

test_frase1 , test_frase2 = genera_frase(), genera_frase()
print('frase1: "'+''.join(test_frase1)+'"')
print('frase2: "'+''.join(test_frase2)+'"')
print('mix:    "'+''.join(mescola((test_frase1,1),(test_frase2,1))[0])+'"')


frase1: "pbvywapkfeq mwmnzfzhsmbleabw"
frase2: "wwayxzhgbsc oglqnaavj sov ax"
mix:    "pwayxzhgfsc mgmqnaavj bovaax"

Ok, ma chi mescolo tra loro? Argh… Uff,riflettiamo, senz’altro voglio la frase migliore, alla fine è quella con più lettere giuste, ma con chi potrei mescolarla? La seconda migliore? E se frasi meno “buone” avessero comunque trovato parti che alla migliore mancano? Facciamo così le scelgo a caso, ma do priorità a quelle con valori più alti. Si, mi sembra sensato, ma come faccio a farlo? T_T Mmmm.... è come se volessi girare una roulette, dove chi ha un fitness più elevato ha più “spicchi” proviamo a fare uno schizzo: Mmm una frase che ha 24 di valore, merita 24 spicchi, mentre una che ha 20 ne riceverà solo 20, quindi il totale degli spicchi è la somma di tutti i valori.


In [101]:
def genera_ruota(candidati):
    totale = 0
    ruota = []
    for frase,valore in candidati:
        totale = totale + valore
        ruota.append((totale,frase,valore))
    return ruota

def gira_ruota(wheel):
    totale = wheel[-1][0]
    pick = totale * random.random()
    for (parziale,candidato,valore) in wheel:
        if parziale >= pick:
            return (candidato,valore)
    return wheel[-1][1:]

candidati = genera_candidati(10)
wheel = genera_ruota(candidati)
pretty_wheel = list(map(lambda x:(x[0],''.join(x[1]),x[2]),wheel))
pp.pprint(pretty_wheel)
print("migliore='"+''.join(migliore(candidati)[0])+"'")


[(0, 'vnakpyicztfcnbvlelcbyytl sgt', 0),
 (0, 'qjhenqiskbuzhfitunghgaei pgc', 0),
 (0, 'oslo wxyunlxplglwoxkjeqohpbc', 0),
 (0, 'jdkgwt hezjembmihrvzfprxkdco', 0),
 (1, 'jsdctdgiktjtxwolhfruiloddios', 1),
 (1, 'tqfqpulhvfbbhxxiykwmmszdujau', 0),
 (2, 'mnonpmqybklvusgvikuz qyvxruj', 1),
 (3, 'bzerolazzf qmkcgggepvwoqyqgo', 1),
 (4, 'jrtjomvjusbopflplmyondcqyjzo', 1),
 (5, 'toxuvog ysmwawfkmsuoizinhavg', 1)]
migliore='jsdctdgiktjtxwolhfruiloddios'

In [92]:
def prova_piu_frasi_e_mescola(num_frasi):
    global valutazioni
    valutazioni = 0
    i=0
    candidati = genera_candidati(num_frasi)
    miglior_frase, miglior_risultato = migliore(candidati)
    while(miglior_risultato < len(amleto)):
        i = i+1
        ruota = genera_ruota(candidati)
        nuovi_candidati = []
        for n in range(0,len(candidati)):
            minitorneo = [gira_ruota(ruota),gira_ruota(ruota)]
            nuova_frase = altera(mescola(minitorneo[0],minitorneo[1])[0])
            nuova_risposta = valuta(nuova_frase)
            minitorneo.append((nuova_frase,nuova_risposta))
            vincitore,valore_vincitore = migliore(minitorneo)
            nuovi_candidati.append((vincitore,valore_vincitore))
            if valore_vincitore > miglior_risultato:
                miglior_risultato = valore_vincitore
                miglior_frase = vincitore
                print(str(i)+':\t"'+''.join(miglior_frase)+'"\t'+str(miglior_risultato))
                stampa_candidati(candidati)
        candidati = nuovi_candidati
    print('valutazioni: '+str(valutazioni))
    
prova_piu_frasi_e_mescola(10)


1:	" jrirs  odnngkae poatblnssll"	6
[('ujcdtqkomrrjouzoc kae orootb', 5),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('r ycfj orsfmglkuysxaho sngnj', 3),
 ('rliqgpxfbvbg eyxksarkxmnnoht', 3),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('vhrvdkmkyidjiupasamlgyfwvvgz', 3),
 ('ryewyoktojzcg jqgwzmffonmpzc', 3),
 ('idlhgjenmiyqzhomrgxhgduzlrts', 3),
 ('pziqcidf yyambkdeuwqnozkqajp', 3),
 (' uamrs jodcnqkasachavblmcsdd', 3),
 ('xsylozeoypfqtupzkfnpbagztqil', 2),
 ('hdabh qzksnlbndkhagvppzsiptt', 2),
 ('raofobtqgyswetwiyneguyjenjui', 2),
 ('fhqpwkvzzbdnnjejwjnp bqqsgo ', 2),
 ('fooxkmlybjulepvlwsasphomcwyq', 2),
 ('zsknpqmteicrxnlmazyw vglhbyl', 2),
 ('hlqarnsskfayzdalffchlpvvmpni', 2),
 ('ekhdejydpsfii pbfazporjramt ', 2),
 ('kcnjcarmxtlhgsoueyxgydztcplu', 2),
 ('zzlvnmpjrtkaoqsoacnopdqjdxay', 2),
 ('ofsnmhbpivyosinaqcxljjaknon ', 2),
 ('xipvzubyjtegldvbiuey tzvzlod', 2),
 ('pznkrucyqevegxyaluevnqkiphwp', 2),
 ('j  gwtjkmrxohsgjfufrq zybrkd', 2),
 ('yyorymhxutxprmn  uixvgnxrzeu', 2),
 ('nyjzgpsjgwyxhqbue  hedwk asr', 2),
 ('tzpzpzoclfylrehhbgmlj hqzqca', 2),
 ('sssnlugnqipdmfvuqeqvjumzmslo', 2),
 ('nyetntfgrqzrszfkluuz tbkgfzy', 2),
 ('idzbccogmcrqrlpexavaqticfgws', 2),
 ('dupmxfzxbkcbahfnavnkbbbwvzzy', 2),
 ('c wubvhohlnpgfovoijbzadgn fq', 2),
 ('lqu  rfnpyeagcrsfkstn k eida', 1),
 ('fpfcgckzboxo  irkaofblhfcfhh', 1),
 ('oiqpohiakbnty y oaxpbssop vj', 1),
 ('sl yllqiwczbzduwmwti qsecjpd', 1),
 ('vzwmrdzuczwnxjqrttksggiscyzm', 1),
 ('cmvomqwytnjrumpwgynxoebptyyh', 1),
 ('kozaorufcyzwxtyyiuiznjfcdiys', 1),
 ('lsjzbnrevrkvhdde foyybguhfdm', 1),
 ('nmdeku uqnptbwatyxgxztgjyaop', 1),
 ('iduxfwrhpogtelzfzwhbcjnkbcse', 1),
 ('gbdabkexhgwxdyzmzwu jfodsgbg', 1),
 ('trooqvvrokgsvkobcjzsmgnxl ed', 1),
 ('wxiiin qqbsxoqkkpjrfehuspjgn', 1),
 ('wzwxujmtiwusiisosia l ayrqcf', 1),
 ('tkrkwvgivpozplxcxolxkcsgqqdc', 1),
 ('phxigurqqqthqxpuxlhujgyrrxdt', 1),
 ('olrr fxjwvjqcyywfvrycggxgyat', 1),
 ('wlibyqqfdlablmbmmvnzrmujvjvl', 1),
 ('aaezutyaqotednyaxfobrf ucnyn', 1),
 ('lgbdqmnhjv cvhqkpm ofcwuopia', 1),
 ('zevxemrvpoctndslrcgbeo nhrmk', 1),
 ('cwpfayxsdfdxxzagufpinuyvtunu', 1),
 ('ugxysxbnngbotszxcqdoblxxpoil', 1),
 ('bxzlzqqairmfaanubvpzehtnahyl', 1),
 ('zegyoqjvmddbhplcxdllqfcuuifp', 1),
 ('hxxtniuiptuwdeozmz fideeaitp', 1),
 ('qglcxadmmnmduiparlf yefcdqyu', 1),
 ('xhngdryqziseadzgycbmtpyvrgjm', 1),
 ('sd yu mxdv goewkutqpvchg jue', 1),
 ('pdxnymkbb dqnlfveebddagxztzm', 1),
 ('idqoqmmalrkalbvfyxl rcsqnzjf', 1),
 ('ycmklrycghovdmozkjibqajlexsb', 0),
 ('kbwisfciajohpdsrcmbrxwusacgd', 0),
 ('hbdruivfhkhnxeffjlcjfkklddwo', 0),
 ('nccrsmilgtvcrdrrreadckplwwji', 0),
 ('ayc cbpesbjqupjunhghqkfr cge', 0),
 ('x afoxbqjnybyfbccckbgqtoyjvm', 0),
 ('hiduavargjvmklztftwsuwatmpos', 0),
 ('ulereudkodzdpgo uqcitemyonph', 0),
 ('fjccltytqainhi qywfdsbxmo zh', 0),
 ('uevcjqeqapwjrprxphh lpzpcl o', 0),
 ('tqvqmxwhtks gmjvsdtergqzjttr', 0),
 ('ivmfwilkoayoqptslfedxrgzmuef', 0),
 ('nqpqnzqbzohgtgkbkoopetlxv kf', 0),
 ('esjsxnevgpxphtpxcyutgcwmzjyq', 0),
 ('ifvyagzroah epfqljlwltfsucwg', 0),
 ('jwptqgx ytypezcqiptyhsvprkqu', 0),
 (' cuwnrjxstzbryoyzgyocilmridv', 0),
 ('luhkruthk dzfinwppefgtaivudv', 0),
 ('ubfrduknprftsptost mrhikfpur', 0),
 ('ednzewkuytohueuhkcrsukitabor', 0),
 (' loibyedzzcrymyxniqlacrbtnpx', 0),
 ('blljcwxddxbjjqcnbvgjqgsfo qm', 0),
 ('vbzywaapacpmqwnbtcpjyxcuwzzc', 0),
 ('tncgkhegnwhraairnwscyvjjxjqh', 0),
 ('ivpvglkbvqooroqzqhljkiqbbaat', 0),
 ('wsybfmi gycjsuk pps vxyelcwe', 0),
 (' mawkpxbzub lwruzxkigfkgvzcj', 0),
 ('lsznwerbkwdfenyzigccspfcjbbg', 0),
 ('lwmsdfveaxumvxmcgbypxcsc zpo', 0),
 ('hgxbzvtbxkugwaweiqidxcquhsei', 0),
 ('uwmobeucoqtxbmnjbeqyznpyjmao', 0),
 ('epdbyllsrhxtpujowzc gqsfgkdj', 0),
 ('sjljjyrghqc zggsklm yqadqwu ', 0),
 ('dnzoasbeekktouxpuof gxcwoqwg', 0),
 ('uyzkghi hzcuncdjxqaeygh mmtu', 0)]
2:	" hlibs  opphikee pnabbynsolc"	7
[(' jrirs  odnngkae poatblnssll', 6),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('soghoivxpsuvd omyq fpdsnamlp', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('vhrvdzmcyidjiuhasarlg hwzqca', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('iziqcwdh ygtmbadzuhbconkqaje', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('pzo cmhfutxpmmnd uixngnkraeu', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('r tcmj orvfmglkaqsxajj snonj', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('rzpcpz orsflgehlbgxajo szqna', 4),
 (' uamrs jodcnqkasachavblmcsdd', 3),
 ('vhrvdkmkyidjiupasamlgyfwvvgz', 3),
 ('caooobwqgyswetpegynxuebpnjuh', 3),
 ('vhrvdkmkyidjiupasamlgyfwvvgz', 3),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('r ycfj orsfmglkuysxaho sngnj', 3),
 ('idlhgjenmiyqzhomrgxhgduzlrts', 3),
 ('ryewyoktojzcg jqgwzmffonmpzc', 3),
 ('dxpmifwxqbsxohknpvnkebbsvjzn', 3),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('hzjkgusjgeyxhqbaeu vedwkphwr', 3),
 ('idlhgjenmiyqzhomrgxhgduzlrts', 3),
 ('idlhgjenmiyqzhomrgxhgduzlrts', 3),
 (' uamrs jodcnqkasachavblmcsdd', 3),
 ('aalzumpartkakqyaxfnbrd jcnan', 3),
 ('vhrvdkmkyidjiupasamlgyfwvvgz', 3),
 ('pziqcidf yyambkdeuwqnozkqajp', 3),
 ('oyqpnhfakqzts f luxz tsopyvy', 3),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('fooxkmlybjulepvlwsasphomcwyq', 2),
 ('nyjzgpsjgwyxhqbue  hedwk asr', 2),
 ('nyetntfgrqzrszfkluuz tbkgfzy', 2),
 ('xsylozeoypfqtupzkfnpbagztqil', 2),
 ('idzbccogmcrqrlpexavaqticfgws', 2),
 ('nyetntfgrqzrszfkluuz tbkgfzy', 2),
 ('xsylozeoypfqtupzkfnpbagztqil', 2),
 ('c wubvhohlnpgfovoijbzadgn fq', 2),
 ('nyjzgpsjgwyxhqbue  hedwk asr', 2),
 ('kcnjcarmxtlhgsoueyxgydztcplu', 2),
 ('nyetntfgrqzrszfkluuz tbkgfzy', 2),
 ('kcnjcarmxtlhgsoueyxgydztcplu', 2),
 ('j  gwtjkmrxohsgjfufrq zybrkd', 2),
 ('nyetntfgrqzrszfkluuz tbkgfzy', 2),
 ('hlqarnsskfayzdalffchlpvvmpni', 2),
 ('nyetntfgrqzrszfkluuz tbkgfzy', 2),
 ('xipvzubyjtegldvbiuey tzvzlod', 2),
 ('idzbccogmcrqrlpexavaqticfgws', 2),
 ('xsylozeoypfqtupzkfnpbagztqil', 2),
 ('dupmxfzxbkcbahfnavnkbbbwvzzy', 2),
 ('yyorymhxutxprmn  uixvgnxrzeu', 2),
 ('hdabh qzksnlbndkhagvppzsiptt', 2),
 ('kcnjcarmxtlhgsoueyxgydztcplu', 2),
 ('raofobtqgyswetwiyneguyjenjui', 2),
 ('hdabh qzksnlbndkhagvppzsiptt', 2),
 ('tzpzpzoclfylrehhbgmlj hqzqca', 2),
 ('xipvzubyjtegldvbiuey tzvzlod', 2),
 ('raofobtqgyswetwiyneguyjenjui', 2),
 ('dupmxfzxbkcbahfnavnkbbbwvzzy', 2),
 ('dupmxfzxbkcbahfnavnkbbbwvzzy', 2),
 ('zzlvnmpjrtkaoqsoacnopdqjdxay', 2),
 ('zsknpqmteicrxnlmazyw vglhbyl', 2),
 ('xipvzubyjtegldvbiuey tzvzlod', 2),
 ('ofsnmhbpivyosinaqcxljjaknon ', 2),
 ('xsylozeoypfqtupzkfnpbagztqil', 2),
 ('kcnjcarmxtlhgsoueyxgydztcplu', 2),
 ('hdabh qzksnlbndkhagvppzsiptt', 2),
 ('qelcxadvmoctndsarlf eh ndryk', 2),
 ('lgbdqmnhjv cvhqkpm ofcwuopia', 1),
 ('kozaorufcyzwxtyyiuiznjfcdiys', 1),
 ('vzwmrdzuczwnxjqrttksggiscyzm', 1),
 ('phxigurqqqthqxpuxlhujgyrrxdt', 1),
 ('xhngdryqziseadzgycbmtpyvrgjm', 1)]
3:	" jmdbq omppjikeo pnab orsolb"	9
[(' hlibs  opphikee pnabbynsolc', 7),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('vorvoivkyidji pasqmuptfnvvlz', 6),
 ('ujcdqnfomrrjguzocpouevonoolb', 6),
 ('ujctbjkbmyrjiweq enae yrooxb', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('bjgdoikomruvd zmc kfe oraolb', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('ujodkqfoywrjgqzoc oae onsoll', 6),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('fwjmza ow kxshywssga dwkmarz', 5),
 ('oyltnhfakypti fqlenz ayopoxo', 5),
 ('yjrhbnf ywnhgwee pnutvynxklc', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('tzozcmhfltxlrmhd umxngnkzdea', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('yjshknv ysuvg om q utdqnsvlp', 5),
 ('vhrhanmcyidjguse aolt hwzvla', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('fogmzdmowsdct  myqgaptstvhlz', 5),
 ('y rhkjfoysfzglseysoato nkvlj', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('hjrbknqzkpnlbqse pgutvznspll', 5),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('iziqcwdh ygtmbadzuhbconkqaje', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('r tcmj orvfmglkaqsxajj snonj', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('rzpcpz orsflgehlbgxajo szqna', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('vhrvdzmcyidjiuhasarlg hwzqca', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('r tcmj orvfmglkaqsxajj snonj', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('usylodeoypfvtugmkfnupdsntmil', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('rzpcpz orsflgehlbgxajo szqna', 4),
 ('vhrzgpskywyxiupasakhedfwvagz', 4),
 ('vhrvdzmcyidjiuhasarlg hwzqca', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('fwlmzamow kcshywssga mjtmhrz', 4),
 ('iziqcwdh ygtmbadzuhbconkqaje', 4),
 ('yjrhknf ywnzgqse poutvqnsvll', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('rzpcpz orsflgehlbgxajo szqna', 4),
 ('khltbjev yphiweq enubayxxoxc', 4),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('xsybozooypfqrupekanaqaicfqxl', 3),
 ('r ycfj orsfmglkuysxaho sngnj', 3),
 ('vhrvdkmkyidjiupasamlgyfwvvgz', 3),
 ('ryewyoktojzcg jqgwzmffonmpzc', 3),
 ('idlhgjenmiyqzhomrgxhgduzlrts', 3),
 ('uoghodvxysdvt gmyqpuptsnvmlj', 3),
 ('tlpzrzscsfalzdalfgmllphqzqci', 3),
 ('xipvzubyjtegldvbiuey tzvzlod', 2),
 ('hdabh qzksnlbndkhagvppzsiptt', 2),
 ('hlqarnsskfayzdalffchlpvvmpni', 2),
 ('qelcxadvmoctndsarlf eh ndryk', 2),
 ('yyorymhxutxprmn  uixvgnxrzeu', 2),
 ('zzlvnmpjrtkaoqsoacnopdqjdxay', 2)]
5:	"yjstwnvoywrvi eo q atdonsolb"	10
[(' jmdbq omppjikeo pnab orsolb', 9),
 (' hldrs omdnhi aec natb nsslc', 9),
 (' jmdbq omppjikeo pnab orsolb', 9),
 ('qjlqcqdo rgjouao unab orootc', 9),
 ('kjrtknfv rrjiwzq enueyonxoll', 8),
 ('bjltojeomyuviwzn  nfeaorxolc', 8),
 ('ujcmpqkomrrjnuhl gxae oyoqla', 8),
 ('bjltojeomyuviwzn  nfeaorxolc', 8),
 ('ujctktfoywrjiqeocenae onsolb', 8),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('rzpmpz orsflgqhl gxavo yzqla', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('ujshknkomsujg om   aedopovtb', 7),
 ('vjrhoiv yidzi se poqtvqnvvll', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('uhcdtqmokirjouza  naeyowoogb', 7),
 ('vjrhoiv yidzi se poqtvqnvvll', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('yorvonvkyidni sa poutvqnvvlz', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('ujodkqkomwrjgqzoc kae onoolb', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('uhcvwqmomrdjiupo ekabyorootz', 7),
 ('ujcmzakom rlouzoc kaemorootb', 7),
 ('hjrdh fzmrrloudk  nve yrxplb', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('ujshknkomsujg om   aedopovtb', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('ujcttqkbmrrjiuzq  nab orooxb', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('vjrhoiv yidzi se poqtvqnvvll', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('vjrhoiv yidzi se poqtvqnvvll', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('i tqtqkomwfxgladquhae oroajb', 7),
 ('ujrdtq omynnokae  kaeblrosll', 7),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('vhrvcz c ydjmuaq unbbahdxaca', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('hjrhh fzysnlbndk anvppysxplq', 6),
 ('ujimzakom kjouzoc ka motohtz', 6),
 ('ujldtqmom rlshzos ka  otmhrz', 6),
 ('ujcttqeom yjoueoc na  yrooxz', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('khcvbjkomidjiwpo  klo owovtz', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('fhlmzjeowypcihew sgu mjxdoxc', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('ujlmtamomrkjohyosska mttmorb', 6),
 ('ujcqcqkomygjobzokuhac oroatb', 6),
 ('ujimzakom kjouzoc ka motohtz', 6),
 ('ujctbjkbmyrjiweq enae yrooxb', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('ujchknf mrnzoqgecpkaevonsolb', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('ujldtqmom rlshzos ka  otmhrz', 6),
 ('vorvoivkyidji pasqmuptfnvvlz', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('ujodkqfoywrjgqzoc oae onsoll', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('yjchknkomsmvguoo qkutdqroolb', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('ujodkqfoywrjgqzoc oae onsoll', 6),
 ('fhlmzamoy dlihpassnl mctmvgz', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('yhrhbjfvywnziweq eoubaynsvlq', 5),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('yhrhbjfvywnziweq eoubaynsvlq', 5),
 ('yhrhbjfvywnziweq eoubaynsvlq', 5),
 ('oyltnhfakypti fqlenz ayopoxo', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khltzaeow zcsheq snu aytmoxz', 5),
 ('yjrhbnf ywnhgwee pnutvynxklc', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khrvbjmkyidjiwpa enlbycwxvgz', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('yjshknv ysuvg om q utdqnsvlp', 5),
 ('ujcdtqkomrrjouzoc kae orootb', 5),
 ('khltzaeow zcsheq snu aytmoxz', 5),
 ('yjrhbnf ywnhgwee pnutvynxklc', 5)]
6:	" jlmpq omqrhi ae gnatbonsqla"	13
[('yjstwnvoywrvi eo q atdonsolb', 10),
 (' hshkskompfji om   abdopsolb', 10),
 (' hldrs omdnhi aec natb nsslc', 9),
 (' jmdbq omppjikeo pnab orsolb', 9),
 (' jmdbq omppjikeo pnab orsolb', 9),
 ('ujrhoivoyixji ze pouevqnooll', 9),
 ('ujrhoivomikzi om   qevqnovll', 9),
 ('ojrdtqfomrrjgqao  kav lnoolb', 9),
 (' hldrs omdnhi aec natb nsslc', 9),
 ('qjlqcqdo rgjouao unab orootc', 9),
 (' hldrs omdnhi aec natb nsslc', 9),
 (' hldrs omdnhi aec natb nsslc', 9),
 (' jmdbq omppjikeo pnab orsolb', 9),
 (' hldrs omdnhi aec natb nsslc', 9),
 (' jmdbq omppjikeo pnab orsolb', 9),
 (' jmdbq omppjikeo pnab orsolb', 9),
 ('ujctktfoywrjiqeocenae onsolb', 8),
 ('ujcmpqkomrrjnuhl gxae oyoqla', 8),
 ('kjrtknfv rrjiwzq enueyonxoll', 8),
 ('kjrtknfv rrjiwzq enueyonxoll', 8),
 ('yjrhbn cyydjguae unttaynxkla', 8),
 ('bgrdbskomwnni aqceoubbynaslq', 8),
 ('ujctktfoywrjiqeocenae onsolb', 8),
 ('uqrmknfoydrngqaf phuvyonovll', 8),
 ('hjlmt fzmskjohdx ska mtsxolb', 8),
 ('kjrtknfv rrjiwzq enueyonxoll', 8),
 ('kjrtknfv rrjiwzq enueyonxoll', 8),
 ('bjltojeomyuviwzn  nfeaorxolc', 8),
 ('hjrdh fzmrrloudk  nae yrxplb', 8),
 ('hjrmh fzmdrnoqak  nuvblrxplh', 8),
 ('ujlmkakomsulghpa snl fotovgz', 8),
 ('uhcmzqkom rlcuzac naemowootb', 8),
 ('yjshbnk mwnhg gm  natdopovlb', 8),
 ('bjltojeomyuviwzn  nfeaorxolc', 8),
 ('uhsmbamoopkhokyo sna bttmolc', 8),
 ('ftlmbjmoyipcihea enl yjwdoxc', 8),
 ('ujcmpqkomrrjnuhl gxae oyoqla', 8),
 ('uhcvwqmomrdjiupo ekabyorootz', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('i tqtqkomwfxgladquhae oroajb', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('vhlvtzeo zdjiueq unub hdoota', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('ujshknkomsujg om   aedopovtb', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 (' jrirs omrrjlkzec katbonssll', 7),
 ('ujodkqkomwrjgqzoc kae onoolb', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('ujrdtq omynnokae  kaeblrosll', 7),
 ('ujshknkomsujg om   aedopovtb', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('ujrdtq omynnokae  kaeblrosll', 7),
 ('i tqtqkomwfxgladquhae oroajb', 7),
 ('kjrvb mzysnliwpa enlppcsuplq', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('vjrhoiv yidzi se poqtvqnvvll', 7),
 ('ujrdtq omynnokae  kaeblrosll', 7),
 ('yjshknk mruvo om   atdorovlb', 7),
 ('vjrhoiv yidzi se poqtvqnvvll', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 ('yorvonvkyidni sa poutvqnvvlz', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('ujcttqkbmrrjiuzq  nab orooxb', 7),
 ('hjrdh fzmrrloudk  nve yrxplb', 7),
 ('yarirs  odcngqae phatblnssll', 7),
 ('bjgdrskomdnnd adc oftblnaslb', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 (' hlibs  opphikee pnabbynsolc', 7),
 ('ujodkqkomwrjgqzoc kae onoolb', 7),
 ('ujrhknfoyrrjgqzf pouevonooll', 7),
 ('uhcvwqmomrdjiupo ekabyorootz', 7),
 ('ujcttqkbmrrjiuzq  nab orooxb', 7),
 ('ujchknf mrnzoqgecpkaevonsolb', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('ujimzakom kjouzoc ka motohtz', 6),
 ('yjchknkomsmvguoo qkutdqroolb', 6),
 ('ujchknf mrnzoqgecpkaevonsolb', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('hjrhh fzysnlbndk anvppysxplq', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 (' jrirs  odnngkae poatblnssll', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('ujcqcqkomygjobzokuhac oroatb', 6),
 ('ujimzakom kjouzoc ka motohtz', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('yqrmknfjodcngqae phuvblncvll', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('kjlttjeo yrjineo  nue orootb', 6),
 ('ujodkqfoywrjgqzoc oae onsoll', 6),
 ('yhrhbjfvywnziweq eoubaynsvlq', 5),
 ('yhrhbjfvywnziweq eoubaynsvlq', 5)]
11:	"hhlmt eomsrlg tdcunfb onoola"	14
[(' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujtvoevomiwni ad u ae onvalb', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' hrdts omdrhi ae unat  nsolo', 13),
 (' qsmoikomikzi adcpnatbqnoolc', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('ujrhra omikli pe  nh v nsvlc', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 (' hrdrs omdnhigad  natvqnoolc', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('qjrhcivoyykji ao unpeaonxvla', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('qjrhkqvomigui se uoabvopvotl', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('ujrdksqomdgjigod unabvqpoolc', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('qjrdtq omydhgkao unatbonxkla', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('qjrhcivoyykji ao unpeaonxvla', 12),
 ('qjrhcivoyykji ao unpeaonxvla', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('ujldenvomdzlgqad  na voroolc', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('uvrdtafomprlihae p ab onsolc', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('qjlqkskomikji ol unabhoroold', 12),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('brgdbidomigzifodcpnae onooll', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('ujrhra omikli pe  nh v nsvlc', 12),
 ('u reonvomrrji zd knae orooll', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 (' jritq omjpjikeo pnabbonsolg', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 (' hlmr  omsnjihax  naub sxolc', 11),
 (' qrmoskomdcnd adcpoatbbnaolc', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('bjgdtifomirziqao  kqbbonoola', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 (' hlmr  omsnjihax  naub sxolc', 11),
 ('qjsqkskomegji om unab opootc', 11),
 (' jritq omjpjikeo pnabbonsolg', 11),
 ('vjrhlqvo zdti se unae onowll', 11),
 ('uhrdrafomiklihaec  atoonsvlc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 ('bjldcikomikzi al  nqb oroold', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('bjldcikomikzi al  nqb oroold', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 (' hlmr  omsnjihax  naub sxolc', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('vhldrreomppjikao unab  nsolb', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 (' jrhoqvomidhg ae  naqvlnvwll', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 ('uhrdrafomiklihaec  atoonsvlc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 ('usthrnvomwkxi ae  nue onoolb', 11),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 ('bjldcikomikzi al  nqb oroold', 11),
 (' jrdrivomikzi oez natbqnoslc', 10),
 ('ujrhoafomiklihpq   u vokovll', 10),
 ('ujrhoafomiklihpq   u vokovll', 10),
 ('vjrhoqvomidni se  oaevlnvwll', 10),
 (' ordbs  mpphikee pnab onvols', 10),
 ('vhldrzeomddhi aecunab  nsata', 10),
 ('ujrhoafomiklihpq   u vokovll', 10),
 (' jrdtqfomprziqao pkab orsolb', 10),
 ('brgdkikomikzi odc  qebonooll', 10),
 ('vjrhoqvomidni se  oaevlnvwll', 10),
 ('ujrhrngomrrji ze  nue  noolc', 10),
 (' jrdtqfomprziqao pkab orsolb', 10),
 (' ordbs  mpphikee pnab onvols', 10),
 ('vjmvlqeo zpjikeq unab oroola', 10),
 ('brgdkikomikzi odc  qebonooll', 10),
 (' ordbs  mpphikee pnab onvols', 10)]
12:	"phrurq omsnhi ad unatxonooll"	16
[('hhlmt eomsrlg tdcunfb onoola', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 (' hlmr  omsnhi adcunatx noolc', 14),
 ('uhrmbo omrnhi ac  natdosxoll', 14),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 ('oyldcikomdnhi al pnatdonoolc', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' qsmoikomikzi adcpnatbqnoolc', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 (' jrdbivomigzi ndcpnaebonosll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' qsmoikomikzi adcpnatbqnoolc', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('ujtvoevomiwni ad u ae onvalb', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ohldcqqominhi am pnatdoroold', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('ujlmenfomiklghpd  nu jorooll', 12),
 (' orqbskomeghi o  pnab onvots', 12),
 ('bjgdts omiphikae pnabbonotla', 12),
 ('ujrhra omikli pe  nh v nsvlc', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 (' hrdrs omdnhigad  natvqnoolc', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('ujrhra omikli pe  nh v nsvlc', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('qjrdtq omydhgkao unatbonxkla', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('qjrhkqvomigui se uoabvopvotl', 12),
 ('u reonvomrrji zd knae orooll', 12),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('ujldenvomdzlgqad  na voroolc', 12),
 ('qjlqkskomikji ol unabhoroold', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('qjrhkqvomigui se uoabvopvotl', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('qjrhkqvomigui se uoabvopvotl', 12),
 ('ujldenvomdzlgqad  na voroolc', 12),
 ('uvrdtafomprlihae p ab onsolc', 12),
 ('qjrhkqvomigui se uoabvopvotl', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('qjsdkseomegjikoo unabdonootc', 12),
 ('ujrdksqomdgjigod unabvqpoolc', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('uhrdraftmiklihadrunf oorsvll', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('qjrhcivoyykji ao unpeaonxvla', 12),
 ('ujrhra omikli pe  nh v nsvlc', 12),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 ('bjgdtifomirziqao  kqbbonoola', 11),
 ('bjldcikomikzi al  nqb oroold', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 (' qrmoskomdcnd adcpoatbbnaolc', 11),
 (' hlmr  omsnjihax  naub sxolc', 11),
 ('bordcsk mpphi od   ab onvols', 11),
 ('qjsqkskomegji om unab opootc', 11),
 (' qrmoskomdcnd adcpoatbbnaolc', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('ujlmenfomwrlgqzdrunf  orooll', 11),
 ('uhrdrafomiklihaec  atoonsvlc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 (' jritq omjpjikeo pnabbonsolg', 11),
 ('qjrqcn oyydjguao unaraonxkla', 11)]
13:	"uhrmtovomunhi ad una vonsoll"	17
[('phrurq omsnhi ad unatxonooll', 16),
 ('qwrqonvoyiwji ao unar onxola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhrmb eomsnhg adcunabdunooll', 15),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('uhrmbo omrnhi ac  natdosxoll', 14),
 (' hlmr  omsnhi adcunatx noolc', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('ujrubnkomwplg ed unr  onooll', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('ujrdtseomprlihaq u al onsola', 14),
 (' hlmr  omsnhi adcunatx noolc', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 ('hhlmo vomikni awcu aemovvola', 14),
 ('ujrdkseomdgjikao unabvonootc', 13),
 ('bjrdcskomenni ad  nab qnoolc', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' qsmoikomikzi adcpnatbqnoolc', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhrafqmikzihad unftdorsol ', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('qjrheqvomggui sd unabvopvotc', 13),
 (' jrdbivomigzi ndcpnaebonosll', 13),
 (' qsmoikomikzi adcpnatbqnoolc', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('ohldcqqominhi am pnatdoroold', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujtvoevomiwni ad u ae onvalb', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ohldcqqominhi am pnatdoroold', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ojrheifoywrjiqzd unp  onxola', 13),
 ('mjrubqkomrpng ed pnabdonoolc', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('ujldenvomdzlgqad  na voroolc', 12),
 ('bjgdts omiphikae pnabbonotla', 12),
 ('qjlqkskomikji ol unabhoroold', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 (' hrdrs omdnhigad  natvqnoolc', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('ujldenvomdzlgqad  na voroolc', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('qjrhcivoyykji ao unpeaonxvla', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('ohldrqkomdnhg am pnatdonsolc', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('uhrdraftmiklihadrunf oorsvll', 12),
 ('qjrhkqvomigui se uoabvopvotl', 12),
 ('ujrhtqfqmpnziqam pnatdonooll', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 ('vjrvoqvo iwni sq uoae hnvola', 12),
 ('vjmvlseomdnhikaq umat onsola', 12),
 (' hrdrs omdnhigad  natvqnoolc', 12),
 ('ujrhra omikli pe  nh v nsvlc', 12),
 ('qjsdkseomegjikoo unabdonootc', 12),
 ('qjrqcn oyydjguao unaraonxkla', 11),
 ('qjsqkskomegji om unab opootc', 11),
 ('ujrdvsvomdnndgad  nabvqnoolc', 11)]
14:	"ujrmt  omirli ad unab onsola"	20
[('uhrmtovomunhi ad una vonsoll', 17),
 ('omrmt fomirli odcunab onoolb', 17),
 ('utrmpqeomprli aq u at onsola', 16),
 ('okrdiieomip i od anab onoola', 16),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('qjsdkinomigji aocunabdonoolc', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhrmb eomsnhg adcunabdunooll', 15),
 ('utrdtieomipjihaq unal onoola', 15),
 ('uhsmbtkomiphi aq  natdonooll', 15),
 ('qwrqonvoyiwji ao unar onxola', 15),
 ('uhszbskomegji am unatdopoolc', 14),
 ('ujrubnkomwplg ed unr  onooll', 14),
 (' hlmr  omsnhi adcunatx noolc', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('vjlmps omqrhi aq unatxonsqla', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('hhrhe eoywrji zd unab onxolt', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 ('vjlmpqeomqnhi ad umatbonsqla', 14),
 ('ujrdtseomprlihaq u al onsola', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 ('fjrhpqfqmqrzi am pnatdonsola', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('qjrdcqvomgghi sd unmtdopvolc', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('hhlmtbkomdkji dw unabd nsola', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 (' jlmp  omskhi ae unabmznsqla', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 (' jrhrq omikli pe gna boysvla', 14),
 (' jlmcs omerhi ae gnaz onoola', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 (' ksmoieomipji aqcpnab onoola', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 ('uhrmbo omrnhi ac  natdosxoll', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('ojrheifoywrjiqzd unp  onxola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ohldcqqominhi am pnatdoroold', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ohldcqqominhi am pnatdoroold', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('bjrdcskomenni ad  nab qnoolc', 13),
 ('ojrheifoywrjiqzd unp  onxola', 13),
 ('ujrdkseomdgjikao unabvonootc', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('ujrdtseompgziqam pnabdojoolc', 13),
 (' qsmoikomikzi adcpnatbqnoolc', 13),
 ('qjrdtnvomyrji ao anasaonovla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('bjrdcskomenni ad  nab qnoolc', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 ('ujrhtqfqminei ae  natdonvwll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('hhlmt eomskji dwcunabm nsola', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('ojrdbifomir ifod anae onoolb', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 (' hrdrs omdnhigad  natvqnoolc', 12),
 ('ujldenvomdzlgqad  na voroolc', 12),
 ('bjrdcskomdnni ad  nab qpoolc', 12),
 ('bjgdts omiphikae pnabbonotla', 12),
 ('ujrubqkomrphg em pnatdonooll', 12),
 ('ojrdtnfomrrjiqaq anav onoolb', 12),
 ('uhrdraftmiklihadrunf oorsvll', 12)]
16:	"uyrmt  omigli ad unab onsola"	21
[('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ljrmpq omigji aw unat onsola', 18),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('ujlmt kominji ad  nabdcnoola', 17),
 ('omrmt fomirli odcunab onoolb', 17),
 ('omrmt fomirli odcunab onoolb', 17),
 ('omrmt fomirli odcunab onoolb', 17),
 ('hhrdt vomuvli ad unabvonoolo', 17),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('uhrmtovomunhi ad una vonsoll', 17),
 ('btrmchkomsnli aq unat onsola', 17),
 ('utrmpqeomprli aq u at onsola', 16),
 ('okrdiieomip i od anab onoola', 16),
 ('ujrhtqkomiyhi ad  natdonooll', 16),
 (' jrhpq omqnli ad unl bonsqla', 16),
 ('okrdiieomip i od anab onoola', 16),
 ('ujrhtqkomiyhi ad  natdonooll', 16),
 ('uhlzboeojegji ad unabdonoola', 16),
 ('okrdiieomip i od anab onoola', 16),
 ('hhrxgqeominei ad  nafdonooll', 16),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('ujrhpnkqmqrzi ed unafdonsola', 15),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('uhsmbtkomiphi aq  natdonooll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('hhlmt eomsrli dwnunabmonoola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhsmbtkomiphi aq  natdonooll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('uhribsvomunhi ad  natdonsolo', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhsmbtkomiphi aq  natdonooll', 15),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhsmbtkomiphi aq  natdonooll', 15),
 ('uhlmt komsgjg amcunabdonooha', 15),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 (' j mtoeomrrhi ad unft onoola', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('uhrmb eomsnhg adcunabdunooll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 (' hrmr nomikji de una m ysqla', 15),
 ('uhrdtivomunni ad unabasnxola', 15),
 ('ugrdt eompnli aw u alm nsola', 15),
 ('uhsztskomegji ad unabdqnsolv', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ujrxtqkominei ad  natdqnvoll', 15),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('ujrubnkomwplg ed unr  onooll', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 (' jlmcs omerhi ae gnaz onoola', 14),
 (' jrhrq omikli pe gna boysvla', 14),
 (' jrhrq omikli pe gna boysvla', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('fjrhpqfqmqrzi am pnatdonsola', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('hhrhe eoywrji zd unab onxolt', 14),
 ('hhlmt eomsrlg tdcunfb onoola', 14),
 ('ujrubnkomwplg ed unr  onooll', 14),
 ('vjlmpqeomqnhi ad umatbonsqla', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('uhrdtsvomunni ad unabvqnsolo', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('fjrhpqfqmqrzi am pnatdonsola', 14),
 ('bhrmc komsnji dw unabm nsqla', 14),
 ('ohrhb komdnhg ao  natdonoolc', 14),
 ('hhrhe eoywrji zd unab onxolt', 14),
 ('vjlmpqeomqnhi ad umatbonsqla', 14),
 ('qjrdcqvomgghi sd unmtdopvolc', 14),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 ('uhrhbokomrnhg ao  natdonooll', 13),
 (' jlmpq omqrhi ae gnatbonsqla', 13)]
22:	"ujrmt nomirli ad una  onnola"	22
[('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ajrmp komigji ad  nab onsola', 19),
 ('uhrmt vomunli ad una gonoolo', 19),
 ('ljrmpq omigji aw unat onsola', 18),
 ('ljrmpq omigji aw unat onsola', 18)]
23:	"uarmt  omirli ad una vonnola"	23
[('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirhi ad una vonnola', 21),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20),
 ('ujrmt  omirli ad unab onsola', 20)]
35:	"ujrmi  omigli ad una  onnola"	24
[('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmt  omigli ad una  onnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt  omirli ad una wonnola', 22),
 ('ujrmm  omirli ad una  onnola', 22),
 ('ujrmt  omirli ad una wonnola', 22),
 ('ujrmt romirli ad una vonnola', 22),
 ('ujrmt romirli ad una vonnola', 22),
 ('ujrmt  omirli ad una wonnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt  omirli ad una qonnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt  omirli ad una qonnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt  omirli ad una wonnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmm  omirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22),
 ('ujrmt nomirli ad una  onnola', 22)]
40:	"pfrmi  ominli ad una donnola"	25
[('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmc  omigli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('kjrmi  omirli ad una  onnola', 23),
 ('ujrmi  ominli ad una wonnola', 23),
 ('ujrmc  omigli ad una  onnola', 23)]
44:	"pqrmi  omigli ad una donnola"	26
[('pjrmi eominli ad una donnola', 25),
 ('pfrmi  ominli ad una donnola', 25),
 ('pjrmi  ominli ad una donnola', 25),
 ('pjrmi  ominli ad una donnola', 25),
 ('pfrmi  ominli ad una donnola', 25),
 ('pjrmi eominli ad una donnola', 25),
 ('pjrmi  ominli ad una donnola', 25),
 ('uarmi  ominli ad una donnola', 25),
 ('pjrmi  ominli ad una donnola', 25),
 ('pmrmi  ominli ad una donnola', 25),
 ('pfrmi  ominli ad una donnola', 25),
 ('cjrmi  omigli ad una donnola', 25),
 ('pmrmi  ominli ad una donnola', 25),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  omigli ad una  onnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('pjrmi  ominli ad una wonnola', 24),
 ('ugrmi  omigli ad una  onnola', 24),
 ('ujrmi  ominli ad una donnola', 24),
 ('ujrmi  ominli ad una donnola', 24)]
61:	"pqrmi somigli ad una donnola"	27
[('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pjrmi nomigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pjrmi nomigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pjrmi nomigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pjrmi nomigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26),
 ('pqrmi  omigli ad una donnola', 26)]
71:	"parmi somigli ad una donnola"	28
[('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('parmi  omigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27),
 ('pqrmi somigli ad una donnola', 27)]
valutazioni: 14300

Come speravo le frasi uniscono le forze invece di competere le une con le altre, mettono insieme le soluzioni parziali che trovano e ben presto tutti incanalano i loro sforzi sul candidato più promettente! Ed il numero di valutazioni è diminuito drasticamente, anche con 100 frasi per volta mi servono solo circa 13.000 valutazioni invece delle circa 130.000 necessarie in precedenza, ho guadagnato circa un ordine di grandezza! Certo però che…. Comunque ne impiego circa il doppio di quando usavo una sola frase per volta... Ma chi me l’ha fatto fare di scervellarmi dietro all’uso di più frasi contemporaneamente… forse avrei dovuto ingoiare l’amaro boccone ed imparare a memoria la frase che voleva l’insegnante ;P

Nonostante possa sembrare solo buonsenso ed ironia quello che abbiamo creato è un rudimentale algoritmo genetico. Esistono innumerevoli considerazioni e migliori e scelte alternative ma la nostra strategia contiene tutti gli elementi essenziali per fregiarsi di quel titolo. In particolare abbiamo:

  • Una lista di candidati (le nostre 10/100 frasi casuali), solitamente chiamata “popolazione”, i cui elementi sono detti “geni” (del tipo che vive nelle cellule, non nelle lampade).
  • Un modo di determinare la bontà di un candidato (il numero fornito dall’insegnante), solitamente chiamato “funzione di fitness”
  • Un modo di modificare leggermente un candidato, solitamente chiamato “operatore di mutazione”

Viene spontaneo chiedersi, cosa diamine c’entra questo con la genetica? Beh, il nostro esempio semplificato può aver nascosto alcuni (a dire il vero un vasto numero di) dettagli che rendono difficile vedere il parallelismo con la biologia. Facciamo però uno sforzo d’immaginazione. Proviamo a mappare gli elementi del nostro esempio su i più tradizionali elementi di un algoritmo genetico:

  • Le frasi rappresentano geni/DNA di un organismo
  • L’insegnante che giudica le frasi rappresenta il fitness dei nostri organismi, cioè quando sono adatti a sopravvivere/riprodursi nel nostro ambiente
  • Le variazioni casuali di una lettera rappresentano le naturali mutazioni che avvengono durante la trascrizione di informazioni genetiche
  • Il nostro rimescolamento di frasi rappresenta il normale processo di crossover che avviene durante la riproduzione, tramite cui il materiale genetico proveniente dai genitori viene mescolato.

Possiamo allora dire (beh, forse non dovremmo, ma spero che nessun biologo legga ciò) che le nostre frasi si sono evolute per selezione naturale. Prima che qualcuno con un buon livello di conoscenze biologiche perda le staffe mettiamo in chiaro che ciò è vero solo in un senso moooolto lato. La mia speranza è però che l’idea di fondo sia stata trasmessa, poi che venga chiamato rimescolamento delle frasi o crossover, che sia usato per prendere il meglio dai vari tentativi o ridurre il linkage disequilibrium, i dettagli e la nomenclatura possono venire in seguito. Spero che nessuno si soffermi troppo sui dettagli e cerchi di leggere troppo in questo banale esempio, ma che invece cominci a riflettere su un diverso modo di risolvere i problemi, usando un approccio con un retrogusto biologico e grandi potenzialità.

P.S. Nel caso qualcuno si stia chiedendo come mai è stata scelta proprio la frase “parmi somigli ad una donnola”, sappiate che la scelta è per motivi storici. Infatti nel suo celebre libro “The blind watchmaker” Richard Dawkins per la prima volta fece l’esempio di un programma che evolvesse la frase “Methink it is like a weasel” (appunto tratta dall’Amleto) come esempio di come l’evoluzione non fosse frutto di pura casualità (vedi Teorema delle scimmie infinite) ma in grado di sorpassare questo scoglio di probabilità avverse grazie alla selezione naturale.


In [ ]: