Language: C++

#include <bits/stdc++.h>
/*#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;*/
#define itn int
#define all(c) c.begin(),c.end()
#define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin())
#define ll long long
#define ull unsigned long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define mp(x, y) make_pair(x, y)
using namespace std; 

const double PI = 3.1415926536;
int days[13] = {0, 31, 28, 31, 30, 31,30, 31, 31, 30, 31, 30, 31};

template<typename T>
ostream& operator <<(ostream& out, const vector<T>& mas) {
    for (const auto& x : mas) {
        out << x << ' ';
    }
    return out;
}

void ok() {
    cout << "YES" << '\n';
}

void no() {
    cout << "NO" << '\n';
}

inline ll nxt() {
    ll x;
    cin >> x;
    return x;
} 
 
int xx[] = {1, -1, 0, 0};
int yy[] = {0, 0, 1, -1};

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int n = nxt(), m = nxt(), k = nxt();
    int x1 = nxt() - 1, y1 = nxt() - 1;
    int x2 = nxt() - 1, y2 = nxt() - 1;
    vector<vector<char>> matr(n, vector<char>(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> matr[i][j];
        }
    }

    vector<vector<int>> pref1(n, vector<int>(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (j) pref1[i][j] += pref1[i][j - 1];
            if (matr[i][j] == '@') pref1[i][j]++;
        }
    }

    vector<vector<int>> pref2(m, vector<int>(n));
    for (int j = 0; j < m; j++) {
        for (int i = 0; i < n; i++) {
            if (i) pref2[j][i] += pref2[j][i - 1];
            if (matr[i][j] == '@') pref2[j][i]++;
        }
    }

    int kx[] = {k, -k, 0, 0};
    int ky[] = {0, 0, k, -k};

    auto is_in = [&](int x, int y) {
        return (x >= 0 && x <= n - 1 && 
                y >= 0 && y <= m - 1);
    };

    auto bfs = [&]() {
        queue<pair<int, pii>> q; 
        vector<vector<int>> d(n, vector<int>(m, INT_MAX));
        if (matr[x1][y1] != '@') {
            q.push({0, {x1, y1}});
            d[x1][y1] = 0;
        } 
        
        while (!q.empty()) {
            
            pii from = q.front().second;
            int cur = -q.front().first;
            q.pop();
            if (d[from.firts][from.second] != cur) continue;)
            for (int i = 0; i < 4; i++) {
                int x = from.first;
                int y = from.second;
                for (int j = 0; j < k; j++) {
                    x += xx[i];
                    y += yy[i];
                    if (is_in(x, y) && matr[x][y] != '@') {
                        if (cur + 1 < d[x][y]) {
                            d[x][y] = cur + 1;
                            q.push({-(cur + 1), {x, y}});
                        } 
                    } else {
                        break;
                    }
                }
            } 
        } 
        return d[x2][y2];
    }; 

    int rez = bfs();
    if (rez == INT_MAX) rez = -1;
    cout << rez;
    return 0;
}


Compiler output:
a.cc: In lambda function:
a.cc:95:24: error: 'struct std::pair<int, int>' has no member named 'firts'; did you mean 'first'?
   95 |             if (d[from.firts][from.second] != cur) continue;)
      |                        ^~~~~
      |                        first
a.cc:95:61: error: expected primary-expression before ')' token
   95 |             if (d[from.firts][from.second] != cur) continue;)
      |                                                             ^
a.cc:96:29: error: 'i' was not declared in this scope
   96 |             for (int i = 0; i < 4; i++) {
      |                             ^