#include <iostream>
#include <algorithm>
#include <cassert>
#include <vector>
#include <sstream>
#include <cmath>
#include <stdio.h>

using namespace std;

//-------------------------------------------------------------------------
// geometric library

namespace geometry {

#define EPS 1E-10 ///< 0とみなすサイズ。適当

	struct point {
		double x;
		double y;

		point& operator += (const point& rhs) { x += rhs.x; y += rhs.y; return *this; }
		point& operator -= (const point& rhs) { x -= rhs.x; y -= rhs.y; return *this; }
		point& operator /= (double factor) { x /= factor; y /= factor; return *this; }
		point& operator *= (double factor) { x *= factor; y *= factor; return *this; }
		bool operator == (const point& rhs) const { return (std::abs(x - rhs.x) < EPS) && (std::abs(y - rhs.y) < EPS); }
		bool operator != (const point& rhs) const { return !(*this == rhs); }
		bool operator <= (const point& rhs) const { return x < rhs.x || (x == rhs.x && y <= rhs.y); }
		bool operator >= (const point& rhs) const { return x > rhs.x || (x == rhs.x && y >= rhs.y); }
		bool operator < (const point& rhs) const { return !(*this >= rhs); }
		bool operator > (const point& rhs) const { return !(*this <= rhs); }
		double arg() const { return atan2(y, x); }
		double norm() const { return sqrt(x * x + y * y); }
	};

	typedef point vec;

	point operator + (const point& p1, const point& p2)
	{
		point p(p1);
		p += p2;
		return p;
	}

	point operator / (const point& p1, double factor)
	{
		point p(p1);
		p /= factor;
		return p;
	}

	point operator * (const point& p1, double factor)
	{
		point p(p1);
		p *= factor;
		return p;
	}

	point operator * (double factor, const point& p1)
	{
		point p(p1);
		p *= factor;
		return p;
	}

	point operator - (const point& p1, const point& p2)
	{
		point p(p1);
		p -= p2;
		return p;
	}

	std::istream& operator >> (std::istream& is, point& p)
	{
		is >> p.x >> p.y;
		return is;
	}

	double inner_product(const point& p1, const point& p2)
	{
		return p1.x * p2.x + p1.y * p2.y;
	}

} // namespace geometry


//-------------------------------------------------------------------------
// solution

using namespace geometry;

// 直線p1-p2についてpqと対称な点prを求める
point get_symmetric_point(const point& p1, const point& p2, const point& pq) {
	vec unit_vec = (p2 - p1) / (p2 - p1).norm();

	// pm: pq-prの中点
	point pm = p1 + (inner_product(pq - p1, p2 - p1) / (p2 - p1).norm()) * unit_vec;

	return pm + (pm - pq);
}

int main(void) {
	point p1, p2, pq;
	string line;

	while (getline(cin, line)) {
		replace(line.begin(), line.end(), ',', ' ');
		istringstream ss(line);
		ss >> p1 >> p2 >> pq;

		point pr = get_symmetric_point(p1, p2, pq);

		printf("%f %f\n", pr.x, pr.y);
	}
	return 0;
}