#include<bits/stdc++.h>
using namespace std;
int a[20][20],b[20][20],n;
bool v0(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[i][j])return false;
}
return true;
}
bool v1(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[j][n-1-i])return false;
}
return true;
}
bool v2(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[n-1-i][n-1-j])return false;
}
return true;
}
bool v3(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[n-1-j][i])return false;
}
return true;
}
bool v(int n){
if(v0(n))return true;
if(v1(n))return true;
if(v2(n))return true;
if(v3(n))return true;
return false;
}
int main(){
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int k;
while(cin>>n>>k){
for(int i=0;i<n;i++){
int t;cin>>t;
for(int j=0;j<n;j++)a[i][j]=t%10,t/=10;
}
int s=0;
while(k--){
for(int i=0;i<n;i++){
int t;cin>>t;
for(int j=0;j<n;j++)b[i][j]=t%10,t/=10;
}
if(v(n))s++;
}
cout<<s<<"\n";
}
return 0;
}
/*
i,j
j,n-1-i
n-1-i,n-1-j
n-1-j,i
*/
#include<bits/stdc++.h>
using namespace std;
int a[20][20],b[20][20],n;
bool v0(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[i][j])return false;
}
return true;
}
bool v1(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[j][n-1-i])return false;
}
return true;
}
bool v2(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[n-1-i][n-1-j])return false;
}
return true;
}
bool v3(int n){
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]!=b[n-1-j][i])return false;
}
return true;
}
bool v(int n){
if(v0(n))return true;
if(v1(n))return true;
if(v2(n))return true;
if(v3(n))return true;
return false;
}
int main(){
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int k;
while(cin>>n>>k){
for(int i=0;i<n;i++){
int t;cin>>t;
for(int j=0;j<n;j++)a[i][j]=t%10,t/=10;
}
int s=0;
while(k--){
for(int i=0;i<n;i++){
int t;cin>>t;
for(int j=0;j<n;j++)b[i][j]=t%10,t/=10;
}
if(v(n))s++;
}
cout<<s<<"\n";
}
return 0;
}
/*
i,j
j,n-1-i
n-1-i,n-1-j
n-1-j,i
*/
如果n很大,int t應該裝不下?