#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxN = 1e5 + 5;
const int INF = 1e9 + 5;
int n, m, k;
string s;
int dis[27][27], pre[27][maxN], f[27][maxN];
int ans = INF;
int dp(int pos, int ne){
if (pos > n) return 0;
int &res = f[ne][pos];
if (res != -1) return res;
res = INF;
res = min(res, dp(pos+1, ne) + dis[s[pos] - 'a' + 1][ne]);
if (pos + k - 1 <= n){
for (int i = 1; i <= m; ++i){
res = min(res, dp(pos+k, i) + pre[i][pos+k-1] - pre[i][pos-1]);
}
}
return res;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen("cowmbat.in", "r")){
freopen("cowmbat.in", "r", stdin);
freopen("cowmbat.out", "w", stdout);
}
cin >> n >> m >> k;
cin >> s; s = " " + s;
for (int i = 1; i <= m; ++i){
for (int j = 1; j <= m; ++j){
cin >> dis[i][j];
}
}
for (int k = 1; k <= m; ++k){
for (int i = 1; i <= m; ++i){
for (int j = 1; j <= m; ++j){
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
}
for (int i = 1; i <= m; ++i){
for (int j = 1; j <= n; ++j){
pre[i][j] = pre[i][j-1] + dis[s[j] - 'a' + 1][i];
}
}
memset(f, -1, sizeof(f));
for (int i = 1; i <= m; ++i){
ans = min(ans, dp(k+1, i) + pre[i][k]);
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKY29uc3QgaW50IG1heE4gPSAxZTUgKyA1Owpjb25zdCBpbnQgSU5GID0gMWU5ICsgNTsKCmludCBuLCBtLCBrOwpzdHJpbmcgczsKaW50IGRpc1syN11bMjddLCBwcmVbMjddW21heE5dLCBmWzI3XVttYXhOXTsKaW50IGFucyA9IElORjsKCmludCBkcChpbnQgcG9zLCBpbnQgbmUpewogICAgaWYgKHBvcyA+IG4pIHJldHVybiAwOwogICAgaW50ICZyZXMgPSBmW25lXVtwb3NdOwogICAgaWYgKHJlcyAhPSAtMSkgcmV0dXJuIHJlczsKICAgIHJlcyA9IElORjsKICAgIHJlcyA9IG1pbihyZXMsIGRwKHBvcysxLCBuZSkgKyBkaXNbc1twb3NdIC0gJ2EnICsgMV1bbmVdKTsKICAgIGlmIChwb3MgKyBrIC0gMSA8PSBuKXsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyArK2kpewogICAgICAgICAgICByZXMgPSBtaW4ocmVzLCBkcChwb3MraywgaSkgKyBwcmVbaV1bcG9zK2stMV0gLSBwcmVbaV1bcG9zLTFdKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBpZiAoZm9wZW4oImNvd21iYXQuaW4iLCAiciIpKXsKICAgICAgICBmcmVvcGVuKCJjb3dtYmF0LmluIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiY293bWJhdC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4gPj4gbiA+PiBtID4+IGs7CiAgICBjaW4gPj4gczsgcyA9ICIgIiArIHM7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyArK2kpewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07ICsrail7CiAgICAgICAgICAgIGNpbiA+PiBkaXNbaV1bal07CiAgICAgICAgfQogICAgfQogICAgZm9yIChpbnQgayA9IDE7IGsgPD0gbTsgKytrKXsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyArK2kpewogICAgICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyArK2opewogICAgICAgICAgICAgICAgZGlzW2ldW2pdID0gbWluKGRpc1tpXVtqXSwgZGlzW2ldW2tdICsgZGlzW2tdW2pdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07ICsraSl7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgKytqKXsKICAgICAgICAgICAgcHJlW2ldW2pdID0gcHJlW2ldW2otMV0gKyBkaXNbc1tqXSAtICdhJyArIDFdW2ldOwogICAgICAgIH0KICAgIH0KICAgIG1lbXNldChmLCAtMSwgc2l6ZW9mKGYpKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07ICsraSl7CiAgICAgICAgYW5zID0gbWluKGFucywgZHAoaysxLCBpKSArIHByZVtpXVtrXSk7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKCiAgICByZXR1cm4gMDsKfQ==