Заметим, что каждый камень можно коснуться всего с 4 сторон. Тогда посчитаем $$$dp_{i, j}$$$ — минимальное расстояние, что мы коснулись первых $$$i$$$ камней, и коснулись последнего со стороны $$$j$$$. Для того, чтобы перейти от $$$dp_{i, j}$$$ к $$$dp_{i + 1, q}$$$ надо посчитать расстояние от одной клетки до другой при помощи алгоритма BFS за время $$$\mathcal{O}(n \cdot m)$$$. Отдельно надо посчитать расстояние от старта до первого камня и от последнего камня до финиша. Значит у нас получилось $$$\mathcal{O}(k)$$$ запусков BFS. Значит итоговое время работы $$$\mathcal{O}(n \cdot m \cdot k)$$$.