#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y;
} a[5];
int main() {
  for (int i = 0; i < 3; i++) {
    scanf("%d%d", &a[i].x, &a[i].y);
  }
  if ((a[0].x == a[1].x && a[1].x == a[2].x) ||
      (a[0].y == a[1].y && a[1].y == a[2].y)) {
    printf("1\n");
    return 0;
  } else {
    for (int i = 0; i < 3; i++) {
      if ((a[(0 + i) % 3].x == a[(1 + i) % 3].x &&
           (a[(2 + i) % 3].y >= max(a[(0 + i) % 3].y, a[(1 + i) % 3].y) ||
            a[(2 + i) % 3].y <= min(a[(1 + i) % 3].y, a[(0 + i) % 3].y))) ||
          (a[(0 + i) % 3].y == a[(1 + i) % 3].y &&
           (a[(2 + i) % 3].x >= max(a[(0 + i) % 3].x, a[(1 + i) % 3].x) ||
            a[(2 + i) % 3].x <= min(a[(0 + i) % 3].x, a[(1 + i) % 3].x)))) {
        printf("2\n");
        return 0;
      }
    }
  }
  printf("3\n");
}
