Nel puzzle della torre di Hanoi troviamo n dischi, numerati dal piu' piccolo al piu' grande come 1,2, ...,n. Ciascuno di essi e' collocato su uno di tre pioli (i dischi sono ciambelle), numerati 1,2,3. Non tutti i collocamenti degli n dischi nei tre pioli sono ammissibili: i pioli sono verticali e non e' possibile collocare un disco A sopra un disco B piu' piccolo di A. Pertanto, una configurazione ammissibile e' in sostanza un assegnamento di ciascuno degli n dischi (numerati dal piu' piccolo al piu' grande come 1,2, ...,n) ad uno dei tre pioli (1,2,3). Conosciamo la celebre strategia da impiegarsi per portare l'intera torre di n dischi da un piolo ad un altro muovendo sempre e solo un disco alla volta: essa e' la strategia che impiega il minimo possibile numero di mosse (2^n -1) ed e' espressa dalla procedura "spostaTorre" nella soluzione hanoi.cpp per il tema della volta scorsa. Poiche', da quanto detto sopra, le configurazioni ammissibili sono 3^n, questo vuol dire che al crescere di n le configurazioni "percorribili", ossia quelle configurazioni ammissibili che sono prodotte da "spostaTorre" nel portare la torre da un piolo ad un altro, sono solo una infinitesima parte delle configurazioni ammissibili. Il vostro programma ricevera' in input tre configurazioni ammissibili per uno stesso n, esempio di file input.txt formato di file input.txt: 4 n=numero dei dischi 2 1 1 3 = , , ... , 1 3 2 1 = , , ... , 2 2 1 3 = , , ... , e dovra' scrivere, per ciascuna delle tre configurazioni, su tre righe diverse e nell'ordine, il numero di mosse minimo che porti alla configurazione qualora essa sia percorribile, e -1 in caso contrario. esempio di file output.txt (corrispondente all'input.txt dato sopra) -1 5 4 Assunzioni: tempo limite = 1 secondo, n <= 100.000; delle tre configurazioni almeno una e' percorribile; ogni configurazione percorribile puo' essere raggiunta in al piu' 1.000.000.000 di mosse purche' si parta dalla torre di n dischi collocata sul giusto piolo.