/*
二分图匹配问题
问题是从一坨方格关系中选出尽量多的关系,使每个方格只选一次。
通过观察我们可以发现,横坐标加纵坐标是偶数的方格只能和奇数的方格匹配,所以就变成了二分图的匹配问题。
*/
#include<cstdio>
#include<cstring>
using namespace std;
const int N=55;
const int M=N*N;
int n,m,cas,ans,tot,head[M],match[M],g[N][N];
bool vis[M];
struct node{
int v,next;
}e[M*10];
void add(int x,int y){
e[++tot].v=y;
e[tot].next=head[x];
head[x]=tot;
}
bool hungury(int u){
for(int i=head[u],v;i;i=e[i].next){
v=e[i].v;
if(!vis[v]){
vis[v]=1;
if(!match[v]||hungury(match[v])){
match[v]=u;
return 1;
}
}
}
return 0;
}
int main(){
scanf("%d%d%d",&n,&m,&cas);
for(int x,y;cas--;) scanf("%d%d",&x,&y),g[x][y]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if((i+j&1)||g[i][j]) continue;
if(!g[i-1][j]&&i-1>=1) add((i-1)*m+j,(i-2)*m+j);
if(!g[i+1][j]&&i+1<=n) add((i-1)*m+j,i*m+j);
if(!g[i][j-1]&&j-1>=1) add((i-1)*m+j,(i-1)*m+j-1);
if(!g[i][j+1]&&j+1<=m) add((i-1)*m+j,(i-1)*m+j+1);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if((i+j&1)||g[i][j]) continue;
memset(vis,0,sizeof vis);
if(hungury((i-1)*m+j)) ans++;
}
}
printf("%d",ans);
return 0;
}