А заранее известно, что «jahn» — кривонаписанный «john»? Или известно, только то, что пара — это какое-то слово из словаря? Если первое — проще всего тупо посимвольно.
Если второе — можно попробовать поиск по маске. Например ищем аналог «reccursion»:
r*n — слишком дохрена вариантов?(+1 символ)
re*n — все еще?
re*on… и т.п.
соответственно, если не добились успеха и ошибка в крайних буквах — действовать от обратного(tecursion):
*ecursion -> *ecursio* -> *cursi* (для примера — правильный вариант найдётся в первой итерации)
Такой вариант юзабелен и для SQL-ного LIKE и для grep`a