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