#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int h, w;
cin >> h >> w;
vector<vector<char>> grid(h, vector<char>(w));
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
cin >> grid[i][j];
}
}
vector<vector<int>> prfo(h, vector<int>(w, 0));
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
if(j==0){
if(grid[i][j]=='O'){
prfo[i][j]=1;
}
}else if(grid[i][j]=='O'){
prfo[i][j]=prfo[i][j-1]+1;
}else{
prfo[i][j]=prfo[i][j-1];
}
}
}
vector<vector<int>> prfi(h, vector<int>(w, 0));
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
if(i==0){
if(grid[i][j]=='I'){
prfi[i][j]=1;
}
}else if(grid[i][j]=='I'){
prfi[i][j]=prfi[i-1][j]+1;
}else{
prfi[i][j]=prfi[i-1][j];
}
}
}
int ans=0;
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
if(grid[i][j]=='J'){
ans+=(prfi[h-1][j]-prfi[i][j])*(prfo[i][w-1]-prfo[i][j]);
}
}
}
cout << ans;
}