#include #include #include #include #include template std::vector vec(int len, T elem) { return std::vector(len, elem); } template using MinHeap = std::priority_queue, std::greater>; constexpr int INF = 1 << 30; void solve() { int h, w; std::cin >> h >> w; std::vector grid(h); for (auto& s : grid) std::cin >> s; auto dist = vec(h, vec(w, INF)); auto sdist = vec(h, vec(w, INF)); dist[0][0] = sdist[0][0] = 0; for (int x = 0; x < h; ++x) { for (int y = 0; y < w; ++y) { if (x > 0) { dist[x][y] = std::min(dist[x][y], dist[x - 1][y] + 1); sdist[x][y] = std::min(sdist[x][y], sdist[x - 1][y] + 1); } if (y > 0) { dist[x][y] = std::min(dist[x][y], dist[x][y - 1] + 1); sdist[x][y] = std::min(sdist[x][y], sdist[x][y - 1] + 1); } if (grid[x][y] == 'k') dist[x][y] += sdist[x][y]; } } std::cout << dist[h - 1][w - 1] << "\n"; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); solve(); return 0; }