#include <bits/stdc++.h>
using namespace std;
struct matrx{
int u = 0, l = 0;
};
int main() {
int m, n; cin >> m >> n;
char a[2005][2005];
matrx dp[2005][2005];
matrx cnt[2005][2005];
vector<int> dr[2005];
vector<int> rr[2005];
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
cin >> a[i][j];
cnt[i][j].u = cnt[i - 1][j].u + (a[i][j] == 'R');
cnt[i][j].l = cnt[i][j - 1].l + (a[i][j] == 'R');
if(a[i][j] == 'R'){
dr[i].push_back(j);
rr[j].push_back(i);
}
}
}
int cntt = 0;
for(int i = 1; i <= n; i++){
if(a[1][i] == 'R') cntt++;
if(cntt > n - i) break;
dp[1][i].l = 1;
}
cntt = 0;
for(int i = 2; i <= m; i++){
if(a[i][1] == 'R') cntt++;
if(cntt > m - i) break;
dp[i][1].u = 1;
}
for(int i = 2; i <= m; i++){
for(int j = 2; j <= n; j++){
int r = cnt[i][n].l - cnt[i][j].l, d = cnt[m][j].u - cnt[i][j].u;
dp[i][j].u = dp[i - 1][j].u + dp[i - 1][j].l - (m - i + 1 < d + cnt[i][j].u ? dr[i][cnt[i][j].u - d]:0);
dp[i][j].l = dp[i][j - 1].u + dp[i][j - 1].l - (n - j + 1 < r + cnt[i][j].l ? rr[cnt[i][j].l - r][j]:0);
}
}
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
cout << dp[i][j].u << " " << dp[i][j].l << " ";
}
cout << endl;
}
cout << dp[m][n].u + dp[m][n].l;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBtYXRyeHsKCWludCB1ID0gMCwgbCA9IDA7Cn07CmludCBtYWluKCkgewoJaW50IG0sIG47IGNpbiA+PiBtID4+IG47CgljaGFyIGFbMjAwNV1bMjAwNV07CgltYXRyeCBkcFsyMDA1XVsyMDA1XTsKCW1hdHJ4IGNudFsyMDA1XVsyMDA1XTsKCXZlY3RvcjxpbnQ+IGRyWzIwMDVdOwoJdmVjdG9yPGludD4gcnJbMjAwNV07Cglmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKyl7CgkJZm9yKGludCBqID0gMTsgaiA8PSBuOyBqKyspewoJCQljaW4gPj4gYVtpXVtqXTsKCQkJY250W2ldW2pdLnUgPSBjbnRbaSAtIDFdW2pdLnUgKyAoYVtpXVtqXSA9PSAnUicpOyAKCQkJY250W2ldW2pdLmwgPSBjbnRbaV1baiAtIDFdLmwgKyAoYVtpXVtqXSA9PSAnUicpOyAKCQkJaWYoYVtpXVtqXSA9PSAnUicpewoJCQkJZHJbaV0ucHVzaF9iYWNrKGopOwoJCQkJcnJbal0ucHVzaF9iYWNrKGkpOwoJCQl9IAoJCX0KCX0KCQoJaW50IGNudHQgPSAwOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCWlmKGFbMV1baV0gPT0gJ1InKSBjbnR0Kys7CgkJaWYoY250dCA+IG4gLSBpKSBicmVhazsKCQlkcFsxXVtpXS5sID0gMTsKCX0KCWNudHQgPSAwOwoJZm9yKGludCBpID0gMjsgaSA8PSBtOyBpKyspewoJCWlmKGFbaV1bMV0gPT0gJ1InKSBjbnR0Kys7CgkJaWYoY250dCA+IG0gLSBpKSBicmVhazsKCQlkcFtpXVsxXS51ID0gMTsKCX0KCQoJZm9yKGludCBpID0gMjsgaSA8PSBtOyBpKyspewoJCWZvcihpbnQgaiA9IDI7IGogPD0gbjsgaisrKXsKCQkJaW50IHIgPSBjbnRbaV1bbl0ubCAtIGNudFtpXVtqXS5sLCBkID0gY250W21dW2pdLnUgLSBjbnRbaV1bal0udTsKCQkJZHBbaV1bal0udSA9IGRwW2kgLSAxXVtqXS51ICsgZHBbaSAtIDFdW2pdLmwgLSAobSAtIGkgKyAxIDwgZCArIGNudFtpXVtqXS51ID8gZHJbaV1bY250W2ldW2pdLnUgLSBkXTowKTsKCQkJZHBbaV1bal0ubCA9IGRwW2ldW2ogLSAxXS51ICsgZHBbaV1baiAtIDFdLmwgLSAobiAtIGogKyAxIDwgciArIGNudFtpXVtqXS5sID8gcnJbY250W2ldW2pdLmwgLSByXVtqXTowKTsKCQkJCgkJfQoJCQoJfQoJZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewoJCWZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKXsKCQkJY291dCA8PCBkcFtpXVtqXS51IDw8ICIgIiA8PCBkcFtpXVtqXS5sIDw8ICIgIjsKCQl9CgkJY291dCA8PCBlbmRsOwoJfQoJY291dCA8PCBkcFttXVtuXS51ICsgZHBbbV1bbl0ubDsKCQoJCglyZXR1cm4gMDsKfQ==