#include<cmath>
#include<algorithm>
#include<iostream>
#include<vector>
#include<climits>
#include<cfloat>

using namespace std;

double EPS = 1e-10;
const double PI = acos(-1);


double add(double a, double b){
  if(abs(a+b) < EPS * (abs(a)+abs(b)))return 0;
  return a+b;
}

struct point{
  double x, y;
  point(){}
  point(double x,double y) : x(x) , y(y){}

  point operator + (point p){
    return point(add(x,p.x), add(y,p.y));
  }

  point operator - (point p){
    return point(add(x,-p.x), add(y,-p.y));
  }

  point operator * (double d){
    return point(x*d,y*d);
  }

  point operator / (double d){
    return point(x/d,y/d);
  }
  
  bool operator == ( const point &p ) const {
    return fabs(x-p.x) < EPS && fabs(y-p.y) < EPS;
  }
};

double dot(point a, point b) {
  return (a.x * b.x + a.y * b.y);
}

double cross(point a, point b) {
  return (a.x * b.y - a.y * b.x);
}

double vec_abs(point a){
  return sqrt(a.x*a.x+a.y*a.y);
}

point unit_vector(point a){
  return a/vec_abs(a);
}

double distance_l_p(point a, point b, point c) {
  return abs(cross(b-a, c-a)) / vec_abs(b-a);
}

point normal_vector(point p,point a,point b){
	point v=unit_vector(b-a);
	v = cross(v , p-a) > 0 ?  point(v.y,(-1)*v.x) : point((-1)*v.y , v.x);
	return v*distance_l_p(a,b,p);
}

point f_translate(point t , point a , point b){
	return t+normal_vector(t,a,b)*2;
}

int main(void){

  point p1,p2,q,ans;

  while(~scanf("%lf,%lf,%lf,%lf,%lf,%lf"
	       ,&p1.x,&p1.y,&p2.x,&p2.y,&q.x,&q.y)){

    ans=f_translate(q,p1,p2);
    printf("%.6f %.6f",ans.x,ans.y);
  }

  return 0;
}