Я буду псевдокодировать алгоритм
Найти начальную букву из вашей функции начала обратного хода слова с этой позицией (передать следующую букву или следующую позицию буквы)
, еслиПоследняя позиция, которую вы ищете, вы найдете это.Проверьте, является ли буква в N (север) следующей буквой. Ок, снова вызовите функцию с этой позицией (где вы сейчас находитесь) и следующей буквой (или позицией в вашей строке следующей буквы).Если нет, проверьте письмо на северо-востоке и так далее.Если вы закончили и не нашли хорошего соответствия, вернитесь к предыдущему звонку.
HTH, не стесняйтесь спрашивать разъяснения, если вам нужно.