#include <bits/stdc++.h>
using namespace std;
long long dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};
long long a, b;
long long ck(long long x1, long long y1) {
  if ((x1 + y1) % (a * 2) == 0 || (x1 - y1) % (b * 2) == 0) return 1;
  return 0;
}
long long cal(long long l, long long r, long long mo) {
  if (l > r) swap(l, r);
  if (l < 0) l -= mo;
  if (r < 0) r -= mo;
  return r / mo - l / mo;
}
long long cal(long long x1, long long y1, long long x2, long long y2,
              long long a, long long b) {
  if (ck(x1, y1) || ck(x2, y2)) return (long long)1e15;
  return max(cal(x1 + y1, x2 + y2, a * 2), cal(x1 - y1, x2 - y2, b * 2));
}
int main() {
  long long x1, y1, x2, y2;
  scanf("%I64d%I64d%I64d%I64d%I64d%I64d", &a, &b, &x1, &y1, &x2, &y2);
  long long ans = (long long)1e15;
  if (x1 == x2 && y1 == y2)
    ans = ck(x1, y1);
  else {
    if (abs(x1 - x2) + abs(y1 - y2) > 1)
      for (int i = (0); i <= (3); i++)
        for (int j = (0); j <= (3); j++)
          ans = min(ans,
                    cal(x1 + dx[i], y1 + dy[i], x2 + dx[j], y2 + dy[j], a, b));
    else
      ans = 0;
    ans += ck(x1, y1) + ck(x2, y2);
  };
  printf("%I64d", ans);
  return 0;
}
