#include <bits/stdc++.h>
using namespace std;
long long int extgcd(long long int a, long long int b, long long int& x,
                     long long int& y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  } else {
    int g = extgcd(b, a % b, y, x);
    y -= a / b * x;
    return g;
  }
}
long long int hcf(long long int a, long long int b) {
  if (b > a) return (hcf(b, a));
  if (a % b == 0) return b;
  return (hcf(b, a % b));
}
long long int modpow(long long int a, long long int b) {
  long long int res = 1;
  a %= 1000000007;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % 1000000007;
    a = a * a % 1000000007;
  }
  return res;
}
struct pt {
  int x, y;
};
bool cmpre(pt a, pt b) { return a.x < b.x; }
int main() {
  pt a[4];
  int mn, mx;
  for (int i = (int)0; i < (int)3; ++i) cin >> a[i].x >> a[i].y;
  sort(a, a + 3, cmpre);
  if (a[0].x == a[1].x && a[1].x == a[2].x) return cout << 1, 0;
  if (a[0].x == a[1].x) {
    mn = (a[0].y < a[1].y) ? a[0].y : a[1].y;
    mx = (a[0].y > a[1].y) ? a[0].y : a[1].y;
    if (a[2].y > mn && a[2].y < mx) return cout << 3, 0;
    return cout << 2, 0;
  } else if (a[1].x == a[2].x) {
    mn = (a[1].y < a[2].y) ? a[1].y : a[2].y;
    mx = (a[1].y > a[2].y) ? a[1].y : a[2].y;
    if (a[0].y > mn && a[0].y < mx) return cout << 3, 0;
    return cout << 2, 0;
  }
  for (int i = 0; i < 3; i++) {
    int tmp = a[i].x;
    a[i].x = a[i].y;
    a[i].y = tmp;
  }
  sort(a, a + 3, cmpre);
  if (a[0].x == a[1].x && a[1].x == a[2].x) return cout << 1, 0;
  if (a[0].x == a[1].x) {
    mn = (a[0].y < a[1].y) ? a[0].y : a[1].y;
    mx = (a[0].y > a[1].y) ? a[0].y : a[1].y;
    if (a[2].y > mn && a[2].y < mx) return cout << 3, 0;
    return cout << 2, 0;
  } else if (a[1].x == a[2].x) {
    mn = (a[1].y < a[2].y) ? a[1].y : a[2].y;
    mx = (a[1].y > a[2].y) ? a[1].y : a[2].y;
    if (a[0].y > mn && a[0].y < mx) return cout << 3, 0;
    return cout << 2, 0;
  }
  cout << 3;
  return 0;
}
