"Creare un programma per computer che corregge gli errori di battitura in un testo."
def fixTypos(testo):
    parole = testo.split()
    for i in range(len(parole)):
        parole[i] = spellCheck(parole[i])
    return ' '.join(parole)

def spellCheck(parola):
    dizionario = ["Ciao", "Arrivederci", "Mondo"]
    distanzaMinima = len(parola)
    risultato = parola
    for item in dizionario:
        if distance(parola, item) < distanzaMinima:
            distanzaMinima = distance(parola, item)
            risultato = item
    return risultato

def distance(a, b):
    len_a = len(a)
    len_b = len(b)
    if len_a > len_b: 
        a, b = b, a
        len_a, len_b = len_b, len_a
  
    current_row = range(len_a + 1) 
    for i in range(1, len_b + 1): 
        previous_row, current_row = current_row, [i] + [0] * len_a 
        for j in range(1, len_a + 1): 
            add, delete, change = previous_row[j] + 1, current_row[j - 1] + 1, previous_row[j - 1] 
            if a[j - 1] != b[i - 1]: 
                change += 1
            current_row[j] = min(add, delete, change) 
      
    return current_row[len_a]