#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
using namespace std;
struct node
{
int x, y, dir, dis;
};
const int maxn = 1e3;
const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, 1, 0, -1};
const int INF = 1e9;
int n, m, d, dist[maxn + 10][maxn + 10][4], xa, ya, xb, yb, ans = INF;
char a[maxn + 10][maxn + 10];
bool vis[maxn + 10][maxn + 10][4];
bool check(int x, int y)
{
return x >= 1 && x <= n && y >= 1 && y <= m && a[x][y] == '.';
}
void bfs01(int s, int t)
{
deque<node> dq;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
for (int k = 0; k < 4; k++)
{
dist[i][j][k] = INF;
vis[i][j][k] = 0;
}
for (int k = 0; k < 4; k++)
{
dist[s][t][k] = 0;
dq.push_front({s, t, k, 0});
}
while (!dq.empty())
{
node t = dq.front();
dq.pop_front();
int x = t.x;
int y = t.y;
int dir = t.dir;
int free_dis = t.dis;
if (vis[x][y][dir]) continue;
vis[x][y][dir] = 1;
for (int k = 0; k < 4; k++)
{
int nx = x + dx[k];
int ny = y + dy[k];
if (!check(nx, ny)) continue;
if (free_dis && dir == k && dist[nx][ny][k] > dist[x][y][dir])
{
dist[nx][ny][k] = dist[x][y][dir];
dq.push_front({nx, ny, k, free_dis - 1});
}
else if (dist[nx][ny][k] > dist[x][y][dir] + 1)
{
dist[nx][ny][k] = dist[x][y][dir] + 1;
dq.push_back({nx, ny, k, d - 1});
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("ENERGY.INP", "r"))
{
freopen("ENERGY.INP", "r", stdin);
freopen("ENERGY.OUT", "w", stdout);
}
cin >> n >> m >> d;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
cin >> xa >> ya >> xb >> yb;
bfs01(xa, ya);
for (int k = 0; k < 4; k++)
ans = min(ans, dist[xb][yb][k]);
if (ans == INF) return cout << -1, 0;
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKICAgIGludCB4LCB5LCBkaXIsIGRpczsKfTsKCmNvbnN0IGludCBtYXhuID0gMWUzOwpjb25zdCBpbnQgZHhbXSA9IHstMSwgMCwgMSwgMH07CmNvbnN0IGludCBkeVtdID0gezAsIDEsIDAsIC0xfTsKY29uc3QgaW50IElORiA9IDFlOTsKCmludCBuLCBtLCBkLCBkaXN0W21heG4gKyAxMF1bbWF4biArIDEwXVs0XSwgeGEsIHlhLCB4YiwgeWIsIGFucyA9IElORjsKY2hhciBhW21heG4gKyAxMF1bbWF4biArIDEwXTsKYm9vbCB2aXNbbWF4biArIDEwXVttYXhuICsgMTBdWzRdOwoKYm9vbCBjaGVjayhpbnQgeCwgaW50IHkpCnsKICAgIHJldHVybiB4ID49IDEgJiYgeCA8PSBuICYmIHkgPj0gMSAmJiB5IDw9IG0gJiYgYVt4XVt5XSA9PSAnLic7Cn0Kdm9pZCBiZnMwMShpbnQgcywgaW50IHQpCnsKICAgIGRlcXVlPG5vZGU+IGRxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyBrKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRpc3RbaV1bal1ba10gPSBJTkY7CiAgICAgICAgICAgICAgICB2aXNbaV1bal1ba10gPSAwOwogICAgICAgICAgICB9CiAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7IGsrKykKICAgIHsKICAgICAgICBkaXN0W3NdW3RdW2tdID0gMDsKICAgICAgICBkcS5wdXNoX2Zyb250KHtzLCB0LCBrLCAwfSk7CiAgICB9CiAgICB3aGlsZSAoIWRxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgbm9kZSB0ID0gZHEuZnJvbnQoKTsKICAgICAgICBkcS5wb3BfZnJvbnQoKTsKICAgICAgICBpbnQgeCA9IHQueDsKICAgICAgICBpbnQgeSA9IHQueTsKICAgICAgICBpbnQgZGlyID0gdC5kaXI7CiAgICAgICAgaW50IGZyZWVfZGlzID0gdC5kaXM7CgogICAgICAgIGlmICh2aXNbeF1beV1bZGlyXSkgY29udGludWU7CiAgICAgICAgdmlzW3hdW3ldW2Rpcl0gPSAxOwoKICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7IGsrKykKICAgICAgICB7CiAgICAgICAgICAgIGludCBueCA9IHggKyBkeFtrXTsKICAgICAgICAgICAgaW50IG55ID0geSArIGR5W2tdOwogICAgICAgICAgICBpZiAoIWNoZWNrKG54LCBueSkpIGNvbnRpbnVlOwogICAgICAgICAgICBpZiAoZnJlZV9kaXMgJiYgZGlyID09IGsgJiYgZGlzdFtueF1bbnldW2tdID4gZGlzdFt4XVt5XVtkaXJdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkaXN0W254XVtueV1ba10gPSBkaXN0W3hdW3ldW2Rpcl07CiAgICAgICAgICAgICAgICBkcS5wdXNoX2Zyb250KHtueCwgbnksIGssIGZyZWVfZGlzIC0gMX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGRpc3RbbnhdW255XVtrXSA+IGRpc3RbeF1beV1bZGlyXSArIDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRpc3RbbnhdW255XVtrXSA9IGRpc3RbeF1beV1bZGlyXSArIDE7CiAgICAgICAgICAgICAgICBkcS5wdXNoX2JhY2soe254LCBueSwgaywgZCAtIDF9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3BlbigiRU5FUkdZLklOUCIsICJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbigiRU5FUkdZLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIkVORVJHWS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IG4gPj4gbSA+PiBkOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICBjaW4gPj4geGEgPj4geWEgPj4geGIgPj4geWI7CiAgICBiZnMwMSh4YSwgeWEpOwogICAgZm9yIChpbnQgayA9IDA7IGsgPCA0OyBrKyspCiAgICAgICAgYW5zID0gbWluKGFucywgZGlzdFt4Yl1beWJdW2tdKTsKICAgIGlmIChhbnMgPT0gSU5GKSByZXR1cm4gY291dCA8PCAtMSwgMDsKICAgIGNvdXQgPDwgYW5zOwp9