#include <iostream>
using namespace std;
const int delta[4][2] = { { 2, -1 }, { 2, 1 }, { 1, -2 }, { 1, 2 } };
int
sourcer, sourcec, targetr, targetc, srow, scol;
struct
highp
{
int n[101];
void
operator += ( highp h )
{
n[0] = h.n[0] > n[0] ? h.n[0] : n[0];
for( int i = 1; i <= n[0]; i++ )
n[i] += h.n[i];
for( int i = 1; i <= n[0]; i++ )
{
n[i + 1] += n[i] / 10;
n[i] %= 10;
}
if( n[n[0] + 1] > 0 )
n[0]++;
}
}ans[51][51];
ostream&
operator << ( ostream& out, highp h )
{
for( int i = h.n[0]; i > 0; i-- )
out << h.n[i];
return out;
}
void
__read__()
{
cin >> scol >> srow
>> sourcec >> sourcer
>> targetc >> targetr;
}
void
__search__()
{
memset( ans, 0, sizeof ans );
ans[sourcer][sourcec].n[0] = ans[sourcer][sourcec].n[1] = 1;
for( int j = 0; j <= scol; j++ )
for( int i = 0; i <= srow; i++ )
for( int k = 0; k < 4; k++ )
{
int
r = i + delta[k][1],
c = j + delta[k][0];
if( r > 0 && r <= srow
&& c > 0 && c <= scol )
ans[r][c] += ans[i][j];
}
}
void
__outp__()
{
cout << ans[targetr][targetc] << endl;
}
int
main()
{
__read__();
__search__();
__outp__();
return 0;
}