## https://yukicoder.me/problems/no/2928 def main(): H, W = map(int, input().split()) Si, Sj = map(int, input().split()) Gi, Gj = map(int, input().split()) Si -= 1 Sj -= 1 Gi -= 1 Gj -= 1 passed = [[False] * W for _ in range(H)] passed[Si][Sj] = True def dfs(passed, i0, j0): if (i0, j0) == (Gi, Gj): return 1 answer = 0 for di, dj in ((0, 1), (0, -1), (1, 0), (-1, 0)): new_i = di + i0 new_j = dj + j0 if 0 <= new_i < H and 0 <= new_j < W: if not passed[new_i][new_j]: is_ok = True for di2, dj2 in ((0, 1), (0, -1), (1, 0), (-1, 0)): new_i2 = di2 + new_i new_j2 = dj2 + new_j if 0 <= new_i2 < H and 0 <= new_j2 < W: if (new_i2, new_j2) == (i0, j0): continue if passed[new_i2][new_j2]: is_ok = False break if is_ok: passed[new_i][new_j] = True answer += dfs(passed, new_i, new_j) passed[new_i][new_j] = False return answer ans = dfs(passed, Si, Sj) print(ans) if __name__ == "__main__": main()