//
// 2.cpp
//
//
// Created by Gaurav Gulzar on 13/05/15.
//
//
#include <iostream>
using namespace std;
class PublicTransit{
public:
int maxd;
int getans(int x1,int y1, int x2, int y2, int R, int C){
int md=0;
for(int i=0; i<R; ++i){
for(int j=0; j<C; ++j){
for(int k=i; k<R; ++k){
for(int l=j; l<C; ++l){
int d1 = abs(k-i),d2 = abs(l-j);
int d3 = abs(i-x1)+abs(j-y1)+abs(k-x2)+abs(l-y2), d4 = abs(i-x2)+abs(j-y2)+abs(k-x1)+abs(l-y1);
md = max(md, ( min( d1+d2, min(d3,d4) ) ) );
}
}
}
}
return md;
}
int minimumLongestDistance(int R, int C){
// int tpx1,tpy1,tpx2,tpy2;
maxd = 100000;
for(int i=0; i<R; ++i){
for(int j=0; j<C; ++j){
for(int k=i;k<R;++k){
for(int l=j; l<C; ++l){
maxd = min(getans(i,j,k,l,R,C),maxd);
}
}
}
}
return maxd;
}
};
int main(){
PublicTransit p;
cout << p.minimumLongestDistance(5,3) << "\n";
}