#include <iostream>
#include <sstream>
#include <vector>
#include <list>
#include <string>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <algorithm>
#include <numeric>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <climits>
using namespace std;

struct Vector {
    double x;
    double y;
    Vector() {};
    Vector( double x, double y ): x( x ), y( y ) {
    }
    double getLength() {
        return sqrt( x * x + y * y );
    }
    Vector operator -( Vector v ) {
        Vector answer( x - v.x, y - v.y );
        return answer;
    }
};

std::ostream& operator << ( std::ostream& out, const Vector& v ) {
    return out << "(" << v.x << ", " << v.y << ")";
}

double getCross( Vector a, Vector b ) {
    return a.x * b.y - a.y * b.x;
}

double getArea( Vector a, Vector b, Vector c ) {
    Vector A = b - a;
    Vector B = c - b;
    Vector C = a - c;
    double z = ( A.getLength() + B.getLength() + C.getLength() ) / 2.0;
    return sqrt( z * ( z - A.getLength() ) * ( z - B.getLength() ) * ( z - C.getLength() ) );
}

const int size = 21;
Vector V[size];
int n;

int main() {
    string line;
    n = 0;
    while ( cin >> line ) {
        replace( line.begin(), line.end(), ',', ' ' );
        istringstream is( line );
        is >> V[n].x >> V[n].y;
        n++;
    }

    bool used[size];
    for ( int i = 0; i < size; ++ i ) {
        used[i] = false;
    }

    double area = 0.0;
    for ( int k = 0; k < n - 2; ++ k ) {
        bool first = true;
        int cand;
        double mind;
        for ( int i = 0; i < n; ++ i ) {
            if ( used[i] ) continue;
            if ( first || V[i].getLength() < mind ) {
                first = false;
                cand = i;
                mind = V[i].getLength();
            }
        }
        int cand2 = ( cand + 1 ) % n;
        int cand3 = cand - 1;
        if ( cand3 < 0 ) cand3 = n - 1;
        while ( used[cand2] ) {
            cand2 = ( cand2 + 1 ) % n;
        }
        while ( used[cand3] ) {
            cand3 = cand3 - 1;
            if ( cand3 < 0 ) cand3 = n - 1;
        }
        used[cand] = true;
        area += getArea( V[cand], V[cand2], V[cand3] );
    }
    cout << area << endl;
    
    return 0;
}