#include <complex>
#include <cmath>
#include <vector>
#include <cstdio>

using namespace std;

const double EPS = 1e-6;

typedef complex<double> P;
namespace std {
    bool operator < (const P& a, const P& b) {
        return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
    }
}

double dot(const P& a, const P& b) {
    return real(conj(a)*b);
}

struct L : public vector<P> {
    L(const P &a, const P &b) {
        push_back(a); push_back(b);
    }
};

P projection(const L &l, const P &p) {
    double t = dot(p-l[0], l[0]-l[1]) / norm(l[0]-l[1]);
    return l[0] + t*(l[0]-l[1]);
}
P reflection(const L &l, const P &p) {
    return p + 2.0 * (projection(l, p) - p);
}

int main(){
    double x1,y1,x2,y2,xq,yq;
    while(scanf("%lf,%lf,%lf,%lf,%lf,%lf",
                &x1,&y1,&x2,&y2,&xq,&yq)!=EOF){
        P p1=P(x1,y1),p2=P(x2,y2),q=P(xq,yq);
        auto ans=reflection(L(p1,p2),q);
        printf("%.5f %.5f\n",ans.real(),ans.imag());
    }
}