An n-gram is and n-character subset of a word. Techniques that are already well known use n-grams for detecting and correcting spelling errors in words. This paper offers three basic contributions to n-grams technology. First, a method of reducing storage requirements by random superimposed coding. Second, an n-gram method for finding all dictionary words that differ from a give word by up to two errors. Third, an n-gram method for correcting up to two substitution, insertion, deletion and reversal errors without doing a separate computation for every possible pair of errors.