Вам просто нужно вычислить ограниченное количество расстояний Левенштейна, по одному на каждую возможную точку поворота палиндрома. Опорная точка может быть буквой или между двумя буквами, поэтому строка длиной n имеет 2n-1 опорных точек. Для каждой точки поворота вы вычисляете расстояние Левенштейна для символов до точки поворота и наоборот для символов после нее:
(m)ohammadsajjadhossain: Levensthein("", "niassohdajjasdammaho")
m ohammadsajjadhossain: Levensthein("m", "niassohdajjasdammaho")
m(o)hammadsajjadhossain: Levensthein("m", "niassohdajjasdammah")
mo hammadsajjadhossain: Levensthein("mo", "niassohdajjasdammah")
mo(h)ammadsajjadhossain: Levensthein("mo", "niassohdajjasdamma")
moh ammadsajjadhossain: Levensthein("moh", "niassohdajjasdamma")
и т. д.
Теперь просто возьмите минимум этих расстояний. Если важна скорость, вы можете оптимизировать многие из этих вызовов.