#include<stdio.h>
void reverse(int len,char*c){
for (int i=0;i<len/2;i++){
char temp=c[i];
c[i]=c[len-1-i];
c[len-1-i]=temp;
}
}
void right(int n,int t,char *c){
reverse(n,c);
reverse(t,c);
reverse(n-t,c+t);
}
int main(){
int m,n,k;
scanf("%d%d%d",&m,&n,&k);
char c[m][n+1];
for (int i=0;i<m;i++){
scanf("%s",c[i]);
}
int total=0;
for (int i=0;i<k;i++){
for (int j=0;j<m;j++){
int t;
scanf("%d",&t);
t=t%n;
if (t>0){
right(n,t,c[j]);
}
else if (t<0){
t+=n;
right(n,t,c[j]);
}
}
for (int j=0;j<n;j++){
int count[26]={0};
for (int k=0;k<m;k++){
count[c[k][j]-'a']++;
}
int maxc=0;
for (int k=0;k<26;k++){
if (count[k]>maxc){
maxc=count[k];
}
}
total+=maxc;
}
}
printf("%d",total);
return 0;
}