#include <bits/stdc++.h>
using namespace std;
pair<int, int> v[3];
int ans;
map<set<pair<int, int> >, int> estado;
set<pair<int, int> > s;
void dfs(int x0, int y0, int x, int y, int dist, set<pair<int, int> > marcado) {
  if (estado.find(marcado) != estado.end() && estado[marcado] <= dist) return;
  estado[marcado] = dist;
  if (dist > 4) return;
  if (marcado.find(v[0]) != marcado.end() &&
      marcado.find(v[1]) != marcado.end() &&
      marcado.find(v[2]) != marcado.end()) {
    ans = min(ans, dist);
    return;
  }
  for (set<pair<int, int> >::iterator it = s.begin(); it != s.end(); it++) {
    int x1 = it->first;
    int y1 = it->second;
    if (y0 != -1100000001 && y > y0 && y1 < y) continue;
    if (y0 != -1100000001 && y < y0 && y1 > y) continue;
    if (marcado.find(make_pair(x1, y1)) != marcado.end()) continue;
    if (x == x1 && y != y1) {
      marcado.insert(make_pair(x1, y1));
      dfs(x, y, x1, y1, dist + (x0 == x1 || y0 == y1 ? 0 : 1), marcado);
      marcado.erase(make_pair(x1, y1));
    }
    if (x0 != -1100000001 && x > x0 && x1 < x) continue;
    if (x0 != -1100000001 && x < x0 && x1 > x) continue;
    if (x != x1 && y == y1) {
      marcado.insert(make_pair(x1, y1));
      dfs(x, y, x1, y1, dist + (x0 == x1 || y0 == y1 ? 0 : 1), marcado);
      marcado.erase(make_pair(x1, y1));
    }
  }
}
int main() {
  ans = 30;
  for (int i = 0; i < 3; i++) scanf("%d %d", &v[i].first, &v[i].second);
  s.insert(v[0]);
  s.insert(v[1]);
  s.insert(v[2]);
  for (int i = 0; i < 3; i++)
    for (int j = 0; j < 3; j++) {
      s.insert(make_pair(v[i].first, v[j].second));
      s.insert(make_pair(v[j].first, v[i].second));
    }
  set<pair<int, int> > marcado;
  marcado.insert(make_pair(v[0].first, v[0].second));
  dfs(-1100000001, -1000000001, v[0].first, v[0].second, 0, marcado);
  estado.clear();
  marcado.clear();
  marcado.insert(make_pair(v[1].first, v[1].second));
  dfs(-1100000001, -1000000001, v[1].first, v[1].second, 0, marcado);
  estado.clear();
  marcado.clear();
  marcado.insert(make_pair(v[2].first, v[2].second));
  dfs(-1100000001, -1000000001, v[2].first, v[2].second, 0, marcado);
  printf("%d", ans);
  return 0;
}
