#include <bits/stdc++.h>
using namespace std;
int dx[] = {+1, +1, -1, -1};
int dy[] = {+1, -1, +1, -1};
int grid[11][11];
int isValid(int x, int y) {
  if (x >= 1 && x <= 8 && y >= 1 && y <= 8) return 1;
  return 0;
}
int main() {
  int r1, r2, c1, c2, fl, x, y;
  int i, j, k, l;
  cin >> r1 >> c1 >> r2 >> c2;
  int rook, bishop, king;
  king = -1;
  if (r1 == r2) {
    rook = 1;
    king = abs(c1 - c2);
  } else if (c1 == c2) {
    rook = 1;
    king = abs(r1 - r2);
  } else {
    rook = 2;
    fl = 1;
    king = 1e9;
    for (i = 0; fl == 1 && i < 4; i++) {
      x = r1;
      y = c1;
      int step = 0;
      while (isValid(x, y)) {
        if (x == r2 && y == c2) {
          king = min(king, step);
          break;
        } else if (x == r2) {
          king = min(king, step + abs(y - c2));
          break;
        } else if (y == c2) {
          king = min(king, step + abs(x - r2));
          break;
        }
        x += dx[i];
        y += dy[i];
        step++;
      }
    }
  }
  fl = 1;
  for (i = 0; fl == 1 && i < 4; i++) {
    x = r1;
    y = c1;
    while (isValid(x, y)) {
      grid[x][y] = 1;
      if (x == r2 && y == c2) {
        bishop = 1;
        fl = 0;
        break;
      }
      x += dx[i];
      y += dy[i];
    }
  }
  if (fl == 1) {
    bishop = 0;
    for (i = 0; fl == 1 && i < 4; i++) {
      x = r2;
      y = c2;
      x += dx[i];
      y += dy[i];
      while (isValid(x, y)) {
        grid[x][y]++;
        if (grid[x][y] == 2) {
          bishop = 2;
          fl = 0;
          break;
        }
        x += dx[i];
        y += dy[i];
      }
    }
  }
  cout << rook << ' ' << bishop << ' ' << king << '\n';
  return 0;
}
