#include<iostream>
using namespace std;
int main()
{
	int x1, y1, x2, y2;
	cin >> x1 >> y1;
	cin >> x2 >> y2;

	// u ovom zadatku je trazen samo ispis koliko je moguce formirati kvadrata na osnovu tih tacaka, a nije trazeno nikakvo izracunavanje unutar 
	// zadatka, s toga sam sama na papiru zakljucila, jer postoje samo tri mogucnosti koje su dozvoljene i za koje mozemo lako zakljuciti koliko kvadrata formiraju

	if (x1 != x2 && y1 != y2)
	{
		// u slucaju kada imamo koordinate obe tacke koje su u potpunosti razlicite,
		// zakljucujemo da te dve tacke mogu jedino formirati jednu dijagonalu kvadrata,
		// odnosno ne mogu ciniti jednu stranicu kvadrata, pa odatle zakljucujemo da postoji samo jedan kvadrat
		cout << "1" << endl;
	}
	else if (x1 == x2 && y1 != y2)
	{
		// u slucaju kada imamo x koordinate obe tacke koje su iste, a y koordinate su razlicite,
		//zakljucujemo da one kada se spoje formiraju jednu stranicu kvadrata koja je paralelna sa y osom,
		// odnosno odatle zakljucujemo da se kvadrati mogu jedino formirati kao da je ta stranica osa simetrije prema kojoj
		// mi mozemo formirati kvadrat sa leve, u tom slucaju ta stranica ce biti desna, i sa desne strane, u tom slucaju formirana stranica ce biti leva
		cout << "2" << endl;
	}
	else if (x1 != x2 && y1 == y2)
	{
		// u slucaju kada imamo x koordinate dve tacke koje su razlicite, a y koordinate iste,
		// zakljucujemo da one kad se spoje formiraju duz koja je paralelna sa x osom,
		// odnosno odatle zakljucujemo, kao sto je i u primeru na Petlji, da mogu da se formiraju samo dva kvadrata, 
		// jedan kojem ce ta stranica biti donja stranica, i drugi kvadrat kojem ce ta stranica biti donja
		cout << "2" << endl;
	}
	else
	{
		// u slucaju da koordinate tacaka budu potpuno iste 
		cout << "Nije dozvoljen unos takvih koordinata" << endl;
		return 1;
	}

	return 0;
}