#include using namespace std; int R, S, K; int M[2][2500], D[2][2550]; long long int res; int min(int a, int b) { return a < b ? a : b; } int main() { scanf("%d%d%d", &R, &S, &K); // úplně nahoře a úplně vlevo si domyslíme imaginární políčka // s plodinou číslo K, aby se nám snadněji počítalo for (int i=0; i<=S; i++) D[0][i] = K; for (int i=1; i<=R; i++) { int novy = i % 2; int stary = (novy+1) % 2; D[novy][0] = K; for (int j=1; j<=S; j++) scanf("%d", &D[novy][j]); for (int j=1; j<=S; j++) { if (D[novy][j-1] != D[novy][j] || D[stary][j] != D[novy][j] || D[stary][j-1] != D[novy][j]) M[novy][j] = 1; else M[novy][j] = 1 + min( min(M[novy][j-1], M[stary][j]), M[stary][j-1] ); res += min(i, j) - M[novy][j]; } } printf("%lld\n", res); return 0; }