#include <bits/stdc++.h>
using namespace std;
#define int long long
#define FOR(i, l, r) for(int i = (l); i <= (r); i++)
#define FOD(i, r, l) for(int i = (r); i >= (l); i--)
#define fi first
#define se second
const int maxn = 1e3 + 10;
const int mod = 1e9 + 7;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
int n, m;
char a[maxn][maxn];
int v[maxn * maxn];
int sx, sy;
queue<pair<int, int>> q;
bool vis[maxn * maxn];
int par[maxn * maxn];
vector<int> p;
int dp[maxn * maxn];
bool check(int x, int y)
{
return x >= 0 && x < n && y >= 0 && y < m;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n >> m;
FOR(i, 0, n - 1) FOR(j, 0, m - 1) cin >> a[i][j];
FOR(i, 0, n - 1) FOR(j, 0, m - 1)
{
int x;
cin >> x;
v[i * m + j] = x;
if (a[i][j] == 'O') sx = i, sy = j;
}
int rt = sx * m + sy;
memset(par, -1, sizeof par);
p.push_back(rt);
q.push({sx, sy});
vis[rt] = true;
while (!q.empty())
{
auto [x, y] = q.front();
q.pop();
for (int k = 0; k < 4; k++)
{
int ux = x + dx[k];
int uy = y + dy[k];
int vx = ux + dx[k];
int vy = uy + dy[k];
if (!check(ux, uy) || !check(vx, vy)) continue;
bool flag = false;
if (dx[k] == 1 && dy[k] == 0) flag = (a[ux][uy]=='V' && a[vx][vy]=='.');
if (dx[k] == -1 && dy[k] == 0) flag = (a[ux][uy]=='.' && a[vx][vy]=='V');
if (dx[k] == 0 && dy[k] == 1) flag = (a[ux][uy]=='H' && a[vx][vy]=='.');
if (dx[k] == 0 && dy[k] == -1) flag = (a[ux][uy]=='.' && a[vx][vy]=='H');
if (!flag) continue;
int nx = vx * m + vy;
if (!vis[nx])
{
vis[nx] = true;
par[nx] = x * m + y;
p.push_back(nx);
q.push({vx, vy});
}
}
}
for (int i = p.size() - 1; i >= 0; i--)
{
int u = p[i];
dp[u] += v[u];
int p = par[u];
if (p != -1 && dp[u] > 0) dp[p] += dp[u];
}
cout << dp[rt] << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBGT1IoaSwgbCwgcikgZm9yKGludCBpID0gKGwpOyBpIDw9IChyKTsgaSsrKQojZGVmaW5lIEZPRChpLCByLCBsKSBmb3IoaW50IGkgPSAocik7IGkgPj0gKGwpOyBpLS0pCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKY29uc3QgaW50IG1heG4gPSAxZTMgKyAxMDsKY29uc3QgaW50IG1vZCAgPSAxZTkgKyA3OwoKaW50IGR4W10gPSB7MCwgMCwgMSwgLTF9OwppbnQgZHlbXSA9IHsxLCAtMSwgMCwgMH07CgppbnQgbiwgbTsKY2hhciBhW21heG5dW21heG5dOwppbnQgdlttYXhuICogbWF4bl07IAppbnQgc3gsIHN5OwpxdWV1ZTxwYWlyPGludCwgaW50Pj4gcTsKYm9vbCB2aXNbbWF4biAqIG1heG5dOwppbnQgcGFyW21heG4gKiBtYXhuXTsKdmVjdG9yPGludD4gcDsKaW50IGRwW21heG4gKiBtYXhuXTsKCmJvb2wgY2hlY2soaW50IHgsIGludCB5KQp7CiAgICByZXR1cm4geCA+PSAwICYmIHggPCBuICYmIHkgPj0gMCAmJiB5IDwgbTsKfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApO2NvdXQudGllKDApOwoKICAgIGNpbiA+PiBuID4+IG07CiAgICBGT1IoaSwgMCwgbiAtIDEpIEZPUihqLCAwLCBtIC0gMSkgY2luID4+IGFbaV1bal07CiAgICBGT1IoaSwgMCwgbiAtIDEpIEZPUihqLCAwLCBtIC0gMSkKICAgIHsKICAgICAgICBpbnQgeDsKICAgICAgICBjaW4gPj4geDsKICAgICAgICB2W2kgKiBtICsgal0gPSB4OwogICAgICAgIGlmIChhW2ldW2pdID09ICdPJykgc3ggPSBpLCBzeSA9IGo7CiAgICB9CgogICAgaW50IHJ0ID0gc3ggKiBtICsgc3k7CiAgICBtZW1zZXQocGFyLCAtMSwgc2l6ZW9mIHBhcik7CiAgICBwLnB1c2hfYmFjayhydCk7CiAgICBxLnB1c2goe3N4LCBzeX0pOwogICAgdmlzW3J0XSA9IHRydWU7CiAgICB3aGlsZSAoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBhdXRvIFt4LCB5XSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgNDsgaysrKSAKICAgICAgICB7CiAgICAgICAgICAgIGludCB1eCA9IHggKyBkeFtrXTsKICAgICAgICAgICAgaW50IHV5ID0geSArIGR5W2tdOwogICAgICAgICAgICBpbnQgdnggPSB1eCArIGR4W2tdOwogICAgICAgICAgICBpbnQgdnkgPSB1eSArIGR5W2tdOwogICAgICAgICAgICBpZiAoIWNoZWNrKHV4LCB1eSkgfHwgIWNoZWNrKHZ4LCB2eSkpIGNvbnRpbnVlOwogICAgICAgICAgICBib29sIGZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKGR4W2tdID09ICAxICYmIGR5W2tdID09ICAwKSBmbGFnID0gKGFbdXhdW3V5XT09J1YnICYmIGFbdnhdW3Z5XT09Jy4nKTsKICAgICAgICAgICAgaWYgKGR4W2tdID09IC0xICYmIGR5W2tdID09ICAwKSBmbGFnID0gKGFbdXhdW3V5XT09Jy4nICYmIGFbdnhdW3Z5XT09J1YnKTsKICAgICAgICAgICAgaWYgKGR4W2tdID09ICAwICYmIGR5W2tdID09ICAxKSBmbGFnID0gKGFbdXhdW3V5XT09J0gnICYmIGFbdnhdW3Z5XT09Jy4nKTsKICAgICAgICAgICAgaWYgKGR4W2tdID09ICAwICYmIGR5W2tdID09IC0xKSBmbGFnID0gKGFbdXhdW3V5XT09Jy4nICYmIGFbdnhdW3Z5XT09J0gnKTsKICAgICAgICAgICAgaWYgKCFmbGFnKSBjb250aW51ZTsKICAgICAgICAgICAgaW50IG54ID0gdnggKiBtICsgdnk7CiAgICAgICAgICAgIGlmICghdmlzW254XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmlzW254XSA9IHRydWU7CiAgICAgICAgICAgICAgICBwYXJbbnhdID0geCAqIG0gKyB5OwogICAgICAgICAgICAgICAgcC5wdXNoX2JhY2sobngpOwogICAgICAgICAgICAgICAgcS5wdXNoKHt2eCwgdnl9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCBpID0gcC5zaXplKCkgLSAxOyBpID49IDA7IGktLSkKICAgIHsKICAgICAgICBpbnQgdSA9IHBbaV07CiAgICAgICAgZHBbdV0gKz0gdlt1XTsKICAgICAgICBpbnQgcCA9IHBhclt1XTsKICAgICAgICBpZiAocCAhPSAtMSAmJiBkcFt1XSA+IDApIGRwW3BdICs9IGRwW3VdOwogICAgfQogICAgY291dCA8PCBkcFtydF0gPDwgIlxuIjsKfQ==