import std.stdio, std.string, std.conv;
import std.array, std.algorithm, std.range;
import std.math;

alias real F;
F dot(F[] a, F[] b){ return a[0]*b[0]+a[1]*b[1]; }
F cross(F[] a, F[] b){ return a[0]*b[1]-b[0]*a[1]; }
F[] add(F[] a, F[] b){ return [a[0]+b[0],a[1]+b[1]]; }
F[] sub(F[] a, F[] b){ return [a[0]-b[0],a[1]-b[1]]; }

void main()
{
    foreach(s;stdin.byLine())
    {
        auto m = s.split(",").map!(to!F).array();
        auto P1=m[0..2], P2=m[2..4], Q=m[4..6];
        auto vp=sub(P2,P1), vq=sub(Q,P1);
        auto x = atan2(cross(vp,vq),dot(vp,vq));
        F[] t = [sin(-2*x),cos(-2*x)];
        auto vr = [cross(vq,t),dot(vq,t)];
        auto R = add(vr,P1);
        R.map!(v=>format("%.6f",v)).join(" ").writeln();
    }
}