#include <bits/stdc++.h>
using namespace std;
const long long N = 100000;
const long long mod = 1e9 + 7;
int n, m, k;
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1, 0, 0};
char s[1005][1005];
long long dis[1005][1005][4];
int sx, sy, ex, ey;
struct node {
  int x, y;
  long long len;
};
long long BFS() {
  for (int i = 0; i < 4; i++) dis[sx][sy][1] = 0;
  queue<node> q;
  q.push({sx, sy, 0});
  while (!q.empty()) {
    node t = q.front();
    if (t.x == ex && t.y == ey) return t.len;
    q.pop();
    for (int i = 0; i < 4; i++) {
      for (int j = 1; j <= k; j++) {
        int x = t.x + dx[i] * j, y = t.y + dy[i] * j;
        if (x >= 1 && x <= n && y >= 1 && y <= m && s[x][y] != '#' &&
            dis[x][y][i] == -1) {
          dis[x][y][i] = t.len + 1;
          q.push({x, y, t.len + 1});
        } else
          break;
      }
    }
  }
  return -1;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    cin >> (s[i] + 1);
  }
  cin >> sx >> sy >> ex >> ey;
  memset(dis, -1, sizeof(dis));
  long long ans = BFS();
  cout << ans << "\n";
  return 0;
}
