1. A computer-implemented method, comprising: receiving a sequence of input characters from a keyboard, wherein the keyboard has a predefined layout of characters with each character in the layout having one or more neighbor characters; generating a set of strings from at least a subset of the sequence of input characters, the set of strings comprising permutations of respective input characters in the subset of the sequence and neighbor characters of the respective input characters on the layout of the keyboard; identifying in a dictionary one or more candidate words, each candidate word having a string in the set of strings as a prefix; scoring the candidate words; selecting a subset of the candidate words based on predefined criteria; and presenting the subset of the candidate words.