#include #include #include using namespace std; long long x, y; int main() { cin >> x; cin >> y; char tomb[1000][1000]; int szamok[1000][1000]; char empt; empt = getchar(); for(int i = 0; i < x; i++) { for(int j = 0; j < y; j++) { tomb[i][j] = getchar(); } empt = getchar(); } long long res = 0; /* for(int i = 0; i < x; i++) { for(int j = 0; j < y; j++) { cout << tomb[i][j] << " "; } cout << endl; }*/ // elso oszlop for(int i = 0; i < x; i++) { szamok[i][0] = 1; } // elso sor for(int i = 0; i < y; i++) { szamok[0][i] = 1; } for(int ix = 1; ix < x; ix++) { for(int iy = 1; iy < y; iy++) { if((tomb[ix][iy] == tomb[ix-1][iy]) && (tomb[ix][iy] == tomb[ix][iy-1])) { szamok[ix][iy] = min(szamok[ix-1][iy], szamok[ix][iy-1]) + 1; } else { szamok[ix][iy] = 1; } } } for(int ix = 0; ix < x; ix++) { for(int iy = 0; iy < y; iy++) { res += szamok[ix][iy]; } } // utolso oszlop for(int i = 0; i < x; i++) { szamok[i][0] = 1; } // elso sor for(int i = 0; i < y; i++) { szamok[x-1][i] = 1; } for(int ix = x-2; ix >= 0; ix--) { for(int iy = 1; iy < y; iy++) { if((tomb[ix][iy] == tomb[ix+1][iy]) && (tomb[ix][iy] == tomb[ix][iy-1])) { szamok[ix][iy] = min(szamok[ix+1][iy], szamok[ix][iy-1]) + 1; } else { szamok[ix][iy] = 1; } } } for(int ix = 0; ix < x; ix++) { for(int iy = 0; iy < y; iy++) { res += szamok[ix][iy]; } } // elso oszlop for(int i = 0; i < x; i++) { szamok[i][y-1] = 1; } // utolso sor for(int i = 0; i < y; i++) { szamok[0][i] = 1; } for(int ix = 1; ix < x; ix++) { for(int iy = y-2; iy >= 0; iy--) { if((tomb[ix][iy] == tomb[ix-1][iy]) && (tomb[ix][iy] == tomb[ix][iy+1])) { szamok[ix][iy] = min(szamok[ix-1][iy], szamok[ix][iy+1]) + 1; } else { szamok[ix][iy] = 1; } } } for(int ix = 0; ix < x; ix++) { for(int iy = 0; iy < y; iy++) { res += szamok[ix][iy]; } } // utolso oszlop for(int i = 0; i < x; i++) { szamok[i][y-1] = 1; } // utolso sor for(int i = 0; i < y; i++) { szamok[x-1][i] = 1; } for(int ix = x-2; ix >= 0; ix--) { for(int iy = y-2; iy >= 0; iy--) { if((tomb[ix][iy] == tomb[ix+1][iy]) && (tomb[ix][iy] == tomb[ix][iy+1])) { szamok[ix][iy] = min(szamok[ix+1][iy], szamok[ix][iy+1]) + 1; } else { szamok[ix][iy] = 1; } } } for(int ix = 0; ix < x; ix++) { for(int iy = 0; iy < y; iy++) { res += szamok[ix][iy]; } } res -= 4*(x*y); cout << res << endl; return 0; }