#include<bits/stdc++.h>
using namespace std;
int h ,w ,k;
int xs,ys,xt,yt;
const int inf = 1e9;
int dirx[] = {0,-1,1,0};
int diry[] = {1,0,0,-1};
int main(){
	cin >> h >> w >> k;
	cin>>xs>>ys>>xt>>yt;
	xs--,ys--,xt--,yt--;
	vector<string> vt(h);
	for(int i=0;i<h;i++) cin>>vt[i];
	vector<vector<int>> d(h , vector<int>(w,inf));
	
	
	queue<pair<int,int>> q;
	q.push({xs,ys});
	d[xs][ys] = 0;
	
	
	while(q.size()){
		auto tmp = q.front();
		q.pop();
		int tmpx = tmp.first;
		int tmpy = tmp.second;
		
		for(int i=0;i<4;i++){
//			int tox = tmpx + dirx[i];
//			int toy = tmpy + diry[i];
			int ttmpx = tmpx;
			int ttmpy = tmpy;
			int j;
			for(j=0;j<k;j++){
				ttmpx += dirx[i];
				ttmpy += diry[i];
				if(ttmpx>=0 and ttmpy>=0 and ttmpx<h and ttmpy<w and vt[ttmpx][ttmpy]!='@' and d[ttmpx][ttmpy] > d[tmpx][tmpy]){
					if(d[ttmpx][ttmpy] > d[tmpx][tmpy] + 1){
						d[ttmpx][ttmpy] = d[tmpx][tmpy] + 1;
						q.push({ttmpx , ttmpy});
					}
				}else break;
			}
			
		}
	}
	
	cout<<(d[xt][yt]==1e9 ?  -1 : d[xt][yt])<<endl;
	return 0;
	
}