#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
template <class T>
T RoundOff(T a) {
  return int(a + .5 - (a < 0));
}
template <class T, class C>
void chmax(T& a, C b) {
  if (a < b) a = b;
}
template <class T, class C>
void chmin(T& a, C b) {
  if (b < a) a = b;
}
template <class T, class C>
pair<T, C> mp(T a, C b) {
  return make_pair(a, b);
}
vector<string> split(string str, string delim) {
  vector<string> result;
  int cutAt;
  while ((cutAt = str.find_first_of(delim)) != str.npos) {
    if (cutAt > 0) {
      result.push_back(str.substr(0, cutAt));
    }
    str = str.substr(cutAt + 1);
  }
  if (str.length() > 0) {
    result.push_back(str);
  }
  return result;
}
struct P {
  double x, y;
};
bool operator>(P x, P y) { return x.x > y.x || (x.x == y.x && x.y > y.x); }
double getlen(P a, P b) {
  return sqrt(pow(a.x - b.x, 2.0) + pow(a.y - b.y, 2.0));
}
double helon(double a, double b, double c) {
  double s = (a + b + c) / 2;
  return sqrt(s * (s - a) * (s - b) * (s - c));
}
int main() {
  vector<P> ps(4);
  string str;
  ifstream ifs("data.txt");
  while (getline(ifs, str)) {
    vector<string> ss = split(str, ",");
    for (int i = 0; i < 4; i++) {
      stringstream sts;
      sts << ss[i * 2];
      sts >> ps[i].x;
      sts.clear();
      sts.str("");
      sts << ss[i * 2 + 1];
      sts >> ps[i].y;
    }
    if (cin.eof()) break;
    double ab = getlen(ps[0], ps[1]);
    double bc = getlen(ps[1], ps[2]);
    double cd = getlen(ps[2], ps[3]);
    double da = getlen(ps[3], ps[0]);
    double ac = getlen(ps[2], ps[0]);
    double db = getlen(ps[1], ps[3]);
    if (abs(helon(ab, bc, ac) + helon(cd, da, ac) - helon(db, bc, cd) -
            helon(ab, db, da)) < EPS)
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  }
}
