#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int n, m, i, j, k;
  cin >> n >> m;
  char c[n][m];
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) cin >> c[i][j];
  long long int ans = 0;
  vector<pair<long long int, string> > v[n];
  vector<pair<pair<long long int, long long int>, char> > temp;
  for (i = 0; i < m; i++) {
    temp.resize(0);
    char temp_char = c[0][i];
    long long int xx = 1;
    long long int temp_pos = 0;
    for (j = 1; j < n; j++) {
      if (temp_char == c[j][i]) {
        xx++;
      } else {
        temp.push_back(make_pair(make_pair(xx, temp_pos), temp_char));
        temp_char = c[j][i];
        temp_pos = j;
        xx = 1;
      }
    }
    temp.push_back(make_pair(make_pair(xx, temp_pos), temp_char));
    long long int si = temp.size();
    if (si < 3) continue;
    for (j = 1; j < si - 1; j++) {
      if (temp[j].second != temp[j - 1].second &&
          temp[j].second != temp[j + 1].second &&
          temp[j].first.first <= temp[j - 1].first.first &&
          temp[j].first.first <= temp[j + 1].first.first) {
        string s = "";
        for (k = 0; k < temp[j].first.first; k++) s += temp[j - 1].second;
        for (k = 0; k < temp[j].first.first; k++) s += temp[j].second;
        for (k = 0; k < temp[j].first.first; k++) s += temp[j + 1].second;
        v[temp[j].first.second - temp[j].first.first].push_back({i, s});
      }
    }
  }
  for (i = 0; i < n; i++) {
    long long int si = v[i].size();
    if (si < 1) continue;
    string temp_str = v[i][0].second;
    long long int temp_idx = v[i][0].first;
    long long int xx = 1;
    for (j = 1; j < si; j++) {
      if (temp_str == v[i][j].second && temp_idx + 1 == v[i][j].first) {
        xx++;
      } else {
        ans += (xx * (xx + 1)) / 2;
        temp_str = v[i][j].second;
        xx = 1;
      }
      temp_idx = v[i][j].first;
    }
    ans += (xx * (xx + 1)) / 2;
  }
  cout << ans;
}
