//知识点:基本计算几何
#include<cstdio>
#include<stack>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<map>
using namespace std;
#define nMax 300
#define LL long long
#define rep(i,b,n) for(int (i)=(b);(i)<(n);(i)++)
#define CLR(a) memset((a),0,sizeof((a)))
#define DB double
#define pb push_back
#define mp make_pair
double const eps = 1e-9;
#define oo 1e8
#define pi acos(-1.0)
int dcmp(double x) {
if(fabs(x) <= eps) return 0;
return x > 0 ? 1 : -1;
}
struct point{
double x,y;
point() {}
point(double x,double y):x(x),y(y){}
double len() { return sqrt(x*x+y*y); }
void out() { printf("%.2lf %.2lf\n",x,y); }
void read() {
scanf("%lf%lf",&x,&y);
}
double operator * (point b) {
return x*b.y - y*b.x;
}
double operator ^ (point p) {
return p.x*x + p.y*y;
}
point operator - (point p) {
return point(x-p.x,y-p.y);
}
point operator + (point p) {
return point(x+p.x,y+p.y);
}
point operator / (double k) {
return point(x/k,y/k);
}
point operator * (double k) {
return point(x*k,y*k);
}
point rotate(double sita) {
point ret;
ret.x = x*cos(sita) - y*sin(sita);
ret.y = x*sin(sita) + y*cos(sita);
return ret;
}
};
struct line{
point a,b;
line() {};
line(point a,point b):a(a),b(b) {};
};
point intersection(line u,line v) {
point ret = u.a;
double t = (u.a-v.a)*(v.a-v.b) / ((u.a-u.b)*(v.a-v.b));
ret = ret + (u.b-u.a)*t;
return ret;
}
line Mid_chui(point p1,point p2) {
point mid = (p1+p2)/2.0;
point r = p1-mid;
r = r.rotate(pi/2.0);
r = r+mid;
return line(mid,r);
}
double lx[2],ly[2];
int x[2],y[2];
void updata(point p){
lx[0]=min(lx[0],p.x);
lx[1]=max(lx[1],p.x);
ly[0]=min(ly[0],p.y);
ly[1]=max(ly[1],p.y);
}
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int sameside(point o,point p,point p1,point p2){
return dcmp( ((p-o)*(p1-p)) * ((p-o)*(p2-p)) ) >=0 ;
}
int check(point p1[],point p){
return sameside(p,p1[2],p1[0],p1[1]);
}
point dir[4];
point p[3];
void sovle() {
line l1=Mid_chui(p[0],p[2]);
line l2=Mid_chui(p[1],p[2]);
point O = intersection(l1,l2);
double R = (O-p[0]).len();
lx[0]=ly[0]=oo;lx[1]=ly[1]=-oo;
for(int i=0;i<3;i++) updata(p[i]);
for(int i=0;i<4;i++) dir[i]=point(dx[i],dy[i]);
for(int i=0;i<4;i++) {
if(check(p,O+dir[i]*R)) {
updata(O+dir[i]*R);
}
}
for(int i=0;i<2;i++) {
x[i]=floor(lx[i]);
y[i]=floor(ly[i]);
if(i==1) {
if(dcmp(lx[i]-x[i])>0) x[i]++;
if(dcmp(ly[i]-y[i])>0) y[i]++;
}
}
int ans=(y[1]-y[0])*(x[1]-x[0]);
printf("%d\n",ans);
}
int main() {
freopen("in.txt","r",stdin);
for(int i=0;i<3;i++) p[i].read();
sovle();
return 0;
}