#include<bits/stdc++.h>
using namespace std;
int main()
{
int c,n,m;
cin>>m>>n>>c;
int matrix[c+1][n+1][m+1]; // x,y,z such that xth 2D matrix represnt xth character
for(int i=1;i<=c;i++)
{
for(int j=1;j<=m;j++)
{
for(int k=1;k<=n;k++)
{
cin>>matrix[i][j][k];
}
}
}
bool compared[100][100] = {0};
vector<set<pair<int,int>>> V;
for(int i=1;i<=c;i++)
{
for(int j=1;j<=c;j++)
{
if(i!=j && !compared[i][j] && !compared[j][i])
{
set<pair<int,int>> S;
compared[i][j] = compared[j][i] = 1;
for(int x=1;x<=m;x++)
{
for(int y=1;y<=n;y++)
{
if(matrix[i][x][y] != matrix[j][x][y])
{
S.insert(make_pair(x,y));
}
}
}
V.push_back(S);
}
}
}
map<pair<int,int>,int> M; // for keeping record that a point x,y exists in how many comparisions
bool included[100];
memset(included,0,sizeof(included));
bool done = 0;
int ans = 0;
while(!done)
{
for(int i=0;i<V.size();i++)
{
if(!included[i])
for(auto it = V[i].begin();it!=V[i].end();it++)
{
M[*it]++;
}
}
int maxi = 0;
pair<int,int> P;
for(auto it = M.begin() ; it!=M.end() ; it++)
{
if(it->second > maxi)
{
P = it->first;
maxi = it->second;
}
}
for(int i=0;i<V.size();i++)
{
if(!included[i] && V[i].find(P)!=V[i].end())
{
included[i] = 1;
V[i].erase(P);
}
}
ans++;
int i;
for(i=0;i<V.size();i++)
{
if(!included[i])
{
break;
}
}
if(i==V.size())
{
done = 1;
}
M.clear();
}
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKQp7CglpbnQgYyxuLG07CgljaW4+Pm0+Pm4+PmM7CglpbnQgbWF0cml4W2MrMV1bbisxXVttKzFdOyAvLyB4LHkseiBzdWNoIHRoYXQgeHRoIDJEIG1hdHJpeCByZXByZXNudCB4dGggY2hhcmFjdGVyCglmb3IoaW50IGk9MTtpPD1jO2krKykKCXsKICAgICAgICBmb3IoaW50IGo9MTtqPD1tO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaz0xO2s8PW47aysrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaW4+Pm1hdHJpeFtpXVtqXVtrXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0KCWJvb2wgY29tcGFyZWRbMTAwXVsxMDBdID0gezB9OwoJdmVjdG9yPHNldDxwYWlyPGludCxpbnQ+Pj4gVjsKCWZvcihpbnQgaT0xO2k8PWM7aSsrKQoJewogICAgICAgIGZvcihpbnQgaj0xO2o8PWM7aisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoaSE9aiAmJiAhY29tcGFyZWRbaV1bal0gJiYgIWNvbXBhcmVkW2pdW2ldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZXQ8cGFpcjxpbnQsaW50Pj4gUzsKICAgICAgICAgICAgICAgIGNvbXBhcmVkW2ldW2pdID0gY29tcGFyZWRbal1baV0gPSAxOwogICAgICAgICAgICAgICAgZm9yKGludCB4PTE7eDw9bTt4KyspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCB5PTE7eTw9bjt5KyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZihtYXRyaXhbaV1beF1beV0gIT0gbWF0cml4W2pdW3hdW3ldKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTLmluc2VydChtYWtlX3BhaXIoeCx5KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBWLnB1c2hfYmFjayhTKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0KCW1hcDxwYWlyPGludCxpbnQ+LGludD4gTTsgLy8gZm9yIGtlZXBpbmcgcmVjb3JkIHRoYXQgYSBwb2ludCB4LHkgZXhpc3RzIGluIGhvdyBtYW55IGNvbXBhcmlzaW9ucwoJYm9vbCBpbmNsdWRlZFsxMDBdOwoJbWVtc2V0KGluY2x1ZGVkLDAsc2l6ZW9mKGluY2x1ZGVkKSk7Cglib29sIGRvbmUgPSAwOwoJaW50IGFucyA9IDA7Cgl3aGlsZSghZG9uZSkKCXsKICAgICAgICBmb3IoaW50IGk9MDtpPFYuc2l6ZSgpO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKCFpbmNsdWRlZFtpXSkKICAgICAgICAgICAgZm9yKGF1dG8gaXQgPSBWW2ldLmJlZ2luKCk7aXQhPVZbaV0uZW5kKCk7aXQrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTVsqaXRdKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW50IG1heGkgPSAwOwogICAgICAgIHBhaXI8aW50LGludD4gUDsKICAgICAgICBmb3IoYXV0byBpdCA9IE0uYmVnaW4oKSA7IGl0IT1NLmVuZCgpIDsgaXQrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGl0LT5zZWNvbmQgPiBtYXhpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBQID0gaXQtPmZpcnN0OwogICAgICAgICAgICAgICAgbWF4aSA9IGl0LT5zZWNvbmQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTxWLnNpemUoKTtpKyspCiAgICAgICAgewogICAgICAgICAgICBpZighaW5jbHVkZWRbaV0gJiYgVltpXS5maW5kKFApIT1WW2ldLmVuZCgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbmNsdWRlZFtpXSA9IDE7CiAgICAgICAgICAgICAgICBWW2ldLmVyYXNlKFApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGFucysrOwogICAgICAgIGludCBpOwogICAgICAgIGZvcihpPTA7aTxWLnNpemUoKTtpKyspCiAgICAgICAgewogICAgICAgICAgICBpZighaW5jbHVkZWRbaV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKGk9PVYuc2l6ZSgpKQogICAgICAgIHsKICAgICAgICAgICAgZG9uZSA9IDE7CiAgICAgICAgfQogICAgICAgIE0uY2xlYXIoKTsKICAgIH0KICAgIGNvdXQ8PGFuczw8ZW5kbDsKCXJldHVybiAwOwp9Cg==