#include <bits/stdc++.h>
#define base 950527
#define base2 1777771
#define N 1001
using namespace std;
typedef unsigned long long ull;
ull A[N][N];
int w,h,p,ans;
bool a[N][N],b[N][N],tmp[N][N];

void Reverse(){for(int i=0;i<p;i++)reverse(b[i],b[i]+p);}

void rol_90(){
  for(int i=0;i<p;i++)
    for(int j=0;j<p;j++) tmp[p-j-1][i]=b[i][j];
  
  for(int i=0;i<p;i++)
    for(int j=0;j<p;j++) b[i][j]=tmp[i][j];
}

int ctoi(char ch){
  if(isupper(ch)) return ch-'A';
  if(islower(ch)) return 26+ch-'a';
  if(isdigit(ch)) return 52+ch-'0';
  if(ch=='+') return 62;
  return 63;
}

void in(int y,bool tmp[N][N]){
  string str[N];
  for(int i=0;i<y;i++) cin>>str[i];
  
  for(int i=0;i<y;i++)
    for(int j=0;j<str[i].size();j++)
      for(int k=0;k<6;k++)tmp[i][6*j+5-k]=(ctoi(str[i][j])>>k)&1;
}

set <ull> S;
void roll_hs(){
  ull target=0;
  for(int i=0;i<p;i++){
    ull k=0;
    for(int j=0;j<p;j++)k=k*base+b[i][j];
    target=target*base2+k; 
  }
  
  if(S.count(target))return;
  S.insert(target);
  
  for(int i=0;i<h;i++){
    ull k=0,l=1;
    for(int j=0;j<w;j++){
      k=k*base+a[i][j];
      if(j-p>=0) k-=l*a[i][j-p];
      else l*=base;
      A[i][j]=k;
    }
  }

  for(int j=p-1;j<w;j++){
    ull k=0,l=1;
    for(int i=0;i<h;i++){
      k=k*base2+A[i][j];
      if(i-p>=0) k-=l*A[i-p][j];
      else l*=base2;
      if(target==k&&i>=p-1)ans++;
    }
  }
}

int main(){
  while(1){
    cin>>w>>h>>p;
    if(!w&&!h&&!p)break;
    in(h,a),in(p,b);
    
    ans=0,S.clear();
    for(int i=0;i<4;i++){
      rol_90(),roll_hs(); 
      Reverse(),roll_hs(),Reverse();
    }
    cout <<ans<<endl;
  }
  return 0;
}