#include #include #include using namespace std; using ll = long long; void forgat(vector& tomb, vector& tomb2) { int N = tomb.size(); int M = tomb[0].size(); for(int i = 0; i < N; i++) { for(int j = 0 ; j < M; j++) { tomb2[j][N - i - 1] = tomb[i][j]; } } swap(tomb, tomb2); } ll megold(vector& tomb) { int N = tomb.size(); int M = tomb[0].size(); ll er = 0; vector> szamok(N, vector(M, 0)); for(int i = 1; i < N; i++) { for(int j = 0; j < M - 1; j++) { if(tomb[i-1][j] == tomb[i][j] && tomb[i - 1][j + 1] == tomb[i][j]) { er += (szamok[i][j] = min(szamok[i-1][j], szamok[i-1][j + 1]) + 1); } } } return er; } int main() { ios::sync_with_stdio(false); int N, M; cin >> N >> M; vector tomb(N); for(string& s : tomb) { cin >> s; } vector tomb2(M, string(N, '\0')); ll er = 0; for(int i = 0; i < 4; i++) { er += megold(tomb); forgat(tomb, tomb2); } cout << er << "\n"; }