#include <bits/stdc++.h>
using namespace std;
int n, m;
char c[2005][2005];
int vis[2005][2005];
bool ok(int i, int j) {
return i >= 1 && i <= n && j >= 1 && j <= m;
}
struct tn {
int x, y;
char before;
};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> c[i][j];
}
}
map<char, pair<int, int>> mp;
mp['D'] = {1, 0};
mp['R'] = {0, 1};
mp['U'] = {-1, 0};
mp['L'] = {0, -1};
queue<tn> q;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (c[i][j] != '#' && c[i][j] != '.') {
q.push({i, j, 'F'});
vis[i][j]++;
}
}
}
while (q.size()) {
int x = q.front().x;
int y = q.front().y;
char before = q.front().before;
q.pop();
if (c[x][y] == '.') {
int nx = x + mp[before].first;
int ny = y + mp[before].second;
if (ok(nx, ny)) {
if (c[nx][ny] == '#') {
vis[nx][ny]++;
}
else {
if (c[nx][ny] != '.') {
if (vis[nx][ny] == 0) {
vis[nx][ny]++;
q.push({nx, ny, before});
}
}
else {
if (vis[nx][ny] < 4) {
vis[nx][ny]++;
q.push({nx, ny, before});
}
}
}
}
}
else {
int nx = mp[c[x][y]].first + x;
int ny = mp[c[x][y]].second + y;
if (ok(nx, ny)) {
if (c[nx][ny] == '#') {
vis[nx][ny]++;
}
else {
if (c[nx][ny] != '.') {
if (vis[nx][ny] == 0) {
vis[nx][ny]++;
q.push({nx, ny, c[x][y]});
}
}
else {
if (vis[nx][ny] < 4) {
vis[nx][ny]++;
q.push({nx, ny, c[x][y]});
}
}
}
}
}
}
int ans = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (c[i][j] == '#') {
if (vis[i][j] > 0) {
ans++;
}
}
}
}
cout << ans << '\n';
return 0;
}
/*
break
could
misty
phone
deads
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAppbnQgbiwgbTsKY2hhciBjWzIwMDVdWzIwMDVdOyAKaW50IHZpc1syMDA1XVsyMDA1XTsgCmJvb2wgb2soaW50IGksIGludCBqKSB7CiAgICByZXR1cm4gaSA+PSAxICYmIGkgPD0gbiAmJiBqID49IDEgJiYgaiA8PSBtOyAKfQpzdHJ1Y3QgdG4gewogICAgaW50IHgsIHk7CiAgICBjaGFyIGJlZm9yZTsKfTsKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewogICAgICAgICAgICBjaW4gPj4gY1tpXVtqXTsgCiAgICAgICAgfQogICAgfQogICAgbWFwPGNoYXIsIHBhaXI8aW50LCBpbnQ+PiBtcDsKICAgIG1wWydEJ10gPSB7MSwgMH07CiAgICBtcFsnUiddID0gezAsIDF9OwogICAgbXBbJ1UnXSA9IHstMSwgMH07CiAgICBtcFsnTCddID0gezAsIC0xfTsgCiAgICBxdWV1ZTx0bj4gcTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewogICAgICAgICAgICBpZiAoY1tpXVtqXSAhPSAnIycgJiYgY1tpXVtqXSAhPSAnLicpIHsKICAgICAgICAgICAgICAgIHEucHVzaCh7aSwgaiwgJ0YnfSk7IAogICAgICAgICAgICAgICAgdmlzW2ldW2pdKys7IAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgd2hpbGUgKHEuc2l6ZSgpKSB7CiAgICAgICAgaW50IHggPSBxLmZyb250KCkueDsKICAgICAgICBpbnQgeSA9IHEuZnJvbnQoKS55OwogICAgICAgIGNoYXIgYmVmb3JlID0gcS5mcm9udCgpLmJlZm9yZTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGlmIChjW3hdW3ldID09ICcuJykgewogICAgICAgICAgICBpbnQgbnggPSB4ICsgbXBbYmVmb3JlXS5maXJzdDsKICAgICAgICAgICAgaW50IG55ID0geSArIG1wW2JlZm9yZV0uc2Vjb25kOwogICAgICAgICAgICBpZiAob2sobngsIG55KSkgewogICAgICAgICAgICAgICAgaWYgKGNbbnhdW255XSA9PSAnIycpIHsKICAgICAgICAgICAgICAgICAgICB2aXNbbnhdW255XSsrOyAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChjW254XVtueV0gIT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aXNbbnhdW255XSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNbbnhdW255XSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHtueCwgbnksIGJlZm9yZX0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlzW254XVtueV0gPCA0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNbbnhdW255XSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHtueCwgbnksIGJlZm9yZX0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaW50IG54ID0gbXBbY1t4XVt5XV0uZmlyc3QgKyB4OwogICAgICAgICAgICBpbnQgbnkgPSBtcFtjW3hdW3ldXS5zZWNvbmQgKyB5OyAKICAgICAgICAgICAgaWYgKG9rKG54LCBueSkpIHsKICAgICAgICAgICAgICAgIGlmIChjW254XVtueV0gPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgICAgdmlzW254XVtueV0rKzsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICBlbHNlIHsgCiAgICAgICAgICAgICAgICAgICAgaWYgKGNbbnhdW255XSAhPSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc1tueF1bbnldID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc1tueF1bbnldKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxLnB1c2goe254LCBueSwgY1t4XVt5XX0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpc1tueF1bbnldIDwgNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzW254XVtueV0rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEucHVzaCh7bngsIG55LCBjW3hdW3ldfSk7IAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaW50IGFucyA9IDA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGNbaV1bal0gPT0gJyMnKSB7CiAgICAgICAgICAgICAgICBpZiAodmlzW2ldW2pdID4gMCkgewogICAgICAgICAgICAgICAgICAgIGFucysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhbnMgPDwgJ1xuJzsgCiAgICByZXR1cm4gMDsKfQoKLyoKYnJlYWsKY291bGQKbWlzdHkKcGhvbmUKZGVhZHMKKi8K