Computer Programs for Spelling Correction: An Experiment in Program Design