#include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair P; #define fi first #define se second #define repl(i,a,b) for(ll i=(ll)(a);i<(ll)(b);i++) #define rep(i,n) repl(i,0,n) #define all(x) (x).begin(),(x).end() #define dbg(x) cout<<#x"="<y?x:y) #define mmin(x,y) (x operator+(const vector& a,const vector& b){ vector c(n,0); rep(i,n)c[i]=a[i]+b[i]; return c; } vector operator-(const vector& a,const vector& b){ vector c(n,0); rep(i,n)c[i]=a[i]-b[i]; return c; } int H,W,K; char S[2001]; vector sum[2001][2001]; int main(){ scanf("%d%d%d",&H,&W,&K); rep(i,H){ scanf("%s",S); rep(j,W){ vector crt(n,0); crt[S[j]-'a']++; sum[i+1][j+1]=crt; } } rep(i,H+1)rep(j,W+1){ if(sum[i][j].size()==0)sum[i][j]=vector(n,0); } rep(i,H+1)rep(j,W)sum[i][j+1]=sum[i][j+1]+sum[i][j]; rep(i,H)rep(j,W+1)sum[i+1][j]=sum[i+1][j]+sum[i][j]; ll res=0; rep(i,H)rep(j,W){ ll add=0; { int lb=0,ub=min(W-j,H-i)+1; while(ub-lb>1){ int X=(ub+lb)/2; vector crt=sum[i+X][j+X]-sum[i][j+X]-sum[i+X][j]+sum[i][j]; int cnt=0; rep(k,n)if(crt[k]>0)cnt++; if(cnt>=K) ub=X; else lb=X; } add-=ub; } { int lb=0,ub=min(W-j,H-i)+1; while(ub-lb>1){ int X=(ub+lb)/2; vector crt=sum[i+X][j+X]-sum[i][j+X]-sum[i+X][j]+sum[i][j]; int cnt=0; rep(k,n)if(crt[k]>0)cnt++; if(cnt>=K+1) ub=X; else lb=X; } add+=ub; } res+=(ll)(add); } cout<