Module: Hash


Problem

2 /2


HASH

Theory Click to read/hide

L'hashing di una stringa è una rappresentazione di una stringa come un numero, univoco (assumendo che la possibilità di una collisione sia trascurabile) per ogni stringa. Ciò consente di memorizzare tutti i dati importanti (come le password) nel database non come stringhe, ma come numeri. Ciò ti consente di proteggere le password se un utente malintenzionato ottiene l'accesso al database delle password, perché non otterrà le password stesse, ma solo la loro rappresentazione numerica, ed è quasi impossibile ottenere una stringa dal suo hash (soprattutto senza conoscere l'algoritmo di hashing ). 
Gli hash polinomiali sono usati più spesso nella programmazione di problemi di competizione.
Uno dei modi migliori per determinare la funzione hash della stringa S è il seguente:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N

Problem

Il programmatore Vasya è stato sfortunato: invece di una vacanza, è stato mandato in viaggio d'affari a una conferenza scientifica. "Dobbiamo aumentare il livello di conoscenza", ha detto il capo, "in Francia si tiene un'importante conferenza sulla crittografia - e lì hanno crittografato ai tempi di Richelieu e decifrato i codici di altre persone ai tempi di Vieta".
Vasya scoprì rapidamente di aver già visto tutti i dipinti del Louvre da qualche parte, la vista della Torre Eiffel lo annoiò ancor prima che il topo la cancellasse dal tappeto, e noi realizziamo tali piramidi di vetro per tutti i tipi di chioschi e ristoranti dubbi. In una parola, semplicemente non c'era niente da vedere a Parigi, non c'era nessun posto dove pescare, quindi Vasya ha dovuto partecipare ai rapporti alla conferenza.
Uno dei relatori, cercando ancora una volta di svelare le cifre di Bacon, ha avanzato l'ipotesi che la chiave dei misteri di Bacon possa essere trovata analizzando tutte le possibili sottostringhe delle opere di Bacon. "Ma ce ne sono troppi!" Vasya fu sorpreso ad alta voce. "No, non così tanto!" - gridò l'oratore, - "Calcola e vedrai di persona!"
La sera stessa, Vasya ha trovato su Internet le opere complete di Bacon. Ha scritto un programma che ha convertito i testi in una lunga riga, rimuovendo tutti gli spazi ei segni di punteggiatura dai testi. E ora Vasya è molto perplesso: come contare il numero di diverse sottostringhe di questa stringa? 

Input
L'input contiene una stringa non vuota ricevuta da Vasya. La stringa è composta solo da caratteri latini minuscoli. La sua lunghezza non supera i 2000 caratteri. 

Uscita
Stampa il numero di diverse sottostringhe di questa stringa.

 

Esempi
# Input Uscita
1 aaba 8