#include using namespace std; typedef long long ll; int n, m; const int maxn = 1100; char A[maxn][maxn]; int B[maxn][maxn]; int C[maxn][maxn]; ll jebaj() { for(int i = 0; i < maxn; ++i) for(int j = 0; j < maxn; ++j) B[i][j] = C[i][j] = 0; ll res = 0; for(int i = n-1; i >= 0; --i) for(int j = m - 1; j >= 0; --j) { if(A[i+1][j] == A[i][j]) { B[i][j] = B[i+1][j] + 1; } else B[i][j] = 1; if(A[i][j+1] == A[i][j]) C[i][j] = min(C[i][j+1] + 1, B[i][j]); else C[i][j] = 1; if(C[i][j] > 1) res += C[i][j] - 1; } return res; } int main() { scanf("%d%d", &n, &m); for(int i = 0; i < n; ++i) scanf("%s", A[i]); ll res = 0; res += jebaj(); for(int i = 0; i < n / 2; ++i) for(int j = 0; j < m; ++j) swap(A[i][j], A[n-i-1][j]); res += jebaj(); for(int i = 0; i < n; ++i) for(int j = 0; j < m / 2; ++j) swap(A[i][j], A[i][m-1-j]); res += jebaj(); for(int i = 0; i < n / 2; ++i) for(int j = 0; j < m; ++j) swap(A[i][j], A[n-i-1][j]); res += jebaj(); printf("%lld\n", res); }