#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf (1LL<<62)
#define ff first
#define ss second
int n, m, l, t;
char s[3005][3005];
deque<pair<ll,int>>q[3005];
ll dp[3005][3005];
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin>>n>>m>>l>>t;
for(int i=0; i<n; i++){
cin>>s[i];
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
dp[i][j]=inf;
}
}
dp[0][0]=0;
q[m].push_back({0,0});//horizontal queue
q[0].push_back({0,0});//0 -> m-1 vertical queue
for(int i=0; i<n; i++){
for(int j=(i==0)?1:0; j<m; j++){
if(s[i][j]=='#'){
while(!q[m].empty()) q[m].pop_back();
while(!q[j].empty()) q[j].pop_back();
continue;
}
while(!q[m].empty() && q[m].front().ss<j-l){
q[m].pop_front();
}
while(!q[j].empty() && q[j].front().ss<i-l){
q[j].pop_front();
}
int x=-1, y=-1;
if(!q[m].empty()) y=q[m].front().ss;
if(!q[j].empty()) x=q[j].front().ss;
if(y!=-1) dp[i][j]=min(dp[i][j],dp[i][y]+t+(j-y));
if(x!=-1) dp[i][j]=min(dp[i][j],dp[x][j]+t+(i-x));
if(dp[i][j]<inf){
while(!q[m].empty() && q[m].back().ff>=dp[i][j]-j) q[m].pop_back();
q[m].push_back({dp[i][j]-j,j});
while(!q[j].empty() && q[j].back().ff>=dp[i][j]-i) q[j].pop_back();
q[j].push_back({dp[i][j]-i,i});
}
}
while(!q[m].empty()) q[m].pop_front();
}
if(dp[n-1][m-1]==inf) cout<<-1<<'\n';
else cout<<dp[n-1][m-1]<<'\n';
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGluZiAoMUxMPDw2MikKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAoKaW50IG4sIG0sIGwsIHQ7CmNoYXIgc1szMDA1XVszMDA1XTsKZGVxdWU8cGFpcjxsbCxpbnQ+PnFbMzAwNV07CmxsIGRwWzMwMDVdWzMwMDVdOwoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKCiAgICBjaW4+Pm4+Pm0+Pmw+PnQ7CgogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKICAgICAgICBjaW4+PnNbaV07CiAgICB9CgogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKICAgICAgICBmb3IoaW50IGo9MDsgajxtOyBqKyspewogICAgICAgICAgICBkcFtpXVtqXT1pbmY7CiAgICAgICAgfQogICAgfQoKICAgIGRwWzBdWzBdPTA7CiAgICBxW21dLnB1c2hfYmFjayh7MCwwfSk7Ly9ob3Jpem9udGFsIHF1ZXVlCiAgICBxWzBdLnB1c2hfYmFjayh7MCwwfSk7Ly8wIC0+IG0tMSB2ZXJ0aWNhbCBxdWV1ZQoKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CiAgICAgICAgZm9yKGludCBqPShpPT0wKT8xOjA7IGo8bTsgaisrKXsKICAgICAgICAgICAgaWYoc1tpXVtqXT09JyMnKXsKICAgICAgICAgICAgICAgIHdoaWxlKCFxW21dLmVtcHR5KCkpIHFbbV0ucG9wX2JhY2soKTsKICAgICAgICAgICAgICAgIHdoaWxlKCFxW2pdLmVtcHR5KCkpIHFbal0ucG9wX2JhY2soKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB3aGlsZSghcVttXS5lbXB0eSgpICYmIHFbbV0uZnJvbnQoKS5zczxqLWwpewogICAgICAgICAgICAgICAgcVttXS5wb3BfZnJvbnQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSghcVtqXS5lbXB0eSgpICYmIHFbal0uZnJvbnQoKS5zczxpLWwpewogICAgICAgICAgICAgICAgcVtqXS5wb3BfZnJvbnQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaW50IHg9LTEsIHk9LTE7CiAgICAgICAgICAgIGlmKCFxW21dLmVtcHR5KCkpIHk9cVttXS5mcm9udCgpLnNzOwogICAgICAgICAgICBpZighcVtqXS5lbXB0eSgpKSB4PXFbal0uZnJvbnQoKS5zczsKCiAgICAgICAgICAgIGlmKHkhPS0xKSBkcFtpXVtqXT1taW4oZHBbaV1bal0sZHBbaV1beV0rdCsoai15KSk7CiAgICAgICAgICAgIGlmKHghPS0xKSBkcFtpXVtqXT1taW4oZHBbaV1bal0sZHBbeF1bal0rdCsoaS14KSk7CgogICAgICAgICAgICBpZihkcFtpXVtqXTxpbmYpewogICAgICAgICAgICAgICAgd2hpbGUoIXFbbV0uZW1wdHkoKSAmJiBxW21dLmJhY2soKS5mZj49ZHBbaV1bal0taikgcVttXS5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgcVttXS5wdXNoX2JhY2soe2RwW2ldW2pdLWosan0pOwogICAgICAgICAgICAgICAgd2hpbGUoIXFbal0uZW1wdHkoKSAmJiBxW2pdLmJhY2soKS5mZj49ZHBbaV1bal0taSkgcVtqXS5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgcVtqXS5wdXNoX2JhY2soe2RwW2ldW2pdLWksaX0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB3aGlsZSghcVttXS5lbXB0eSgpKSBxW21dLnBvcF9mcm9udCgpOwogICAgfQoKICAgIGlmKGRwW24tMV1bbS0xXT09aW5mKSBjb3V0PDwtMTw8J1xuJzsKICAgIGVsc2UgY291dDw8ZHBbbi0xXVttLTFdPDwnXG4nOwoKICAgIHJldHVybiAwOwp9