#include <complex>
#include <cstdio>
#include <cmath>
#include <vector>
using namespace std;

// _ÀWð^Æ·é
typedef complex<double> P;
// ÎÌè`
#define PI 3.1415926535898

// e·éë·Ã
#define EPS (1e-10)
//XYÀW
#define X real()
#define Y imag()
class Triangle{

private:
	//Op`ÌR_ÌÀW
	P a, b, c;
	//Op`ÌRÓÌ·³
	double edgeA,edgeB,edgeC;
	//Op`ÌRpÌå«³(WA)
	double angleA,angleB,angleC;
	//Op`ÌÊÏ
	double s;
	//]·è©çRÂÌpxðßéÖ
	double LawOfCosines(double a,double b, double c){
		return acos( (b*b+c*c-a*a) / (2.0*b*c) );
	}
	bool equal(double a, double b){//QÂÌdouble^Ìlªµ¢©Ç¤©
		return (fabs( a-b ) < EPS)? true : false ;
	}
	bool checkRightAngle(double a){//pª¼p©»è·é
		return ( fabs( a-(PI/2.0) ) < EPS )? true : false;
	}

public:
	//RXgN^(RÂÌ_ÆÓÆpxðú»)
	Triangle(P p1, P p2, P p3){
		a = p1;
		b = p2;
		c = p3;
		edgeB = abs(c-a);
		edgeA = abs(b-c);
		edgeC = abs(a-b);
		angleA = LawOfCosines(edgeA,edgeB,edgeC);
		angleB = LawOfCosines(edgeB,edgeC,edgeA);
		angleC = LawOfCosines(edgeC,edgeA,edgeB);
		double hoge;
		hoge = (edgeA+edgeB+edgeC)/2.0;
		s = sqrt(hoge*(hoge-edgeA)*(hoge-edgeB)*(hoge-edgeC));
	}
	double getArea(){//Op`ÌÊÏðÔ·
		return s;
	}
};
int main(){
	double x,y;
	vector<P> polygon;

	while( scanf("%lf,%lf" , &x , &y ) != EOF ){
		P a = (x,y);
		polygon.push_back(a);
	}
	double sum = 0;
	for(int i=1 ; i+1<polygon.size() ; ++i){
		P a = polygon[0];
		P b = polygon[i];
		P c = polygon[i+1];
		Triangle tri(a,b,c);
		sum += tri.getArea();
	}
	printf("%.6lf\n" , sum);
}