#include <bits/stdc++.h>
#define FASTIO ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define LL long long int
using namespace std;

const int N = 2e5 + 5;
const int oo = 1e9;

int movex[4] = {-1, 1, 0, 0};
int movey[4] = {0, 0, -1, 1};

void solve() {
    int h, w, k;
    cin >> h >> w >> k;
    vector<string> v(h);
    int x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    x1--; y1--; x2--; y2--;
    for (auto &it : v) cin >> it;
    vector<vector<int>> reach(h, vector<int>(w, oo));
    queue<pair<int, int>> bfs;
    bfs.push({x1, y1});
    reach[x1][y1] = 0;
    while(!bfs.empty()) {
        auto now = bfs.front(); bfs.pop();
        int xx = now.first, yy = now.second;
        for (int move=0;move<4;++move) {
            for (int d=1;d<=k;++d) {
                int x = xx + movex[move] * d;
                int y = yy + movey[move] * d;
                if (x < 0 || x >= h || y < 0 || y >= w) break;
                if (v[x][y] != '.') break;
                if (reach[x][y] < reach[xx][yy] + 1) break;

                if (reach[x][y] > reach[xx][yy] + 1) bfs.push({x, y});
                reach[x][y] = min(reach[xx][yy] + 1, reach[x][y]);
            }
        }
    }
    int ans = reach[x2][y2];
    if (ans >= oo) ans = -1;
    cout << ans << '\n';
} 
int main() {
    // FASTIO;
    int t = 1;
    // cin >> t;
    while(t--) solve();
    return 0;
}