#include<iostream>
#include<complex>
#include<cmath>
#include<vector>
#include<algorithm>
#include<cstdio>
using namespace std;

#define EPS (1e-10)
typedef complex<double> Po;

double dot(Po x,Po y){return x.real()*y.real() + x.imag()*y.imag();}

double cross(Po x,Po y){return x.real()*y.imag() - x.imag()*y.real();}

class line{
 public:
  Po a,b;

  void set(Po x,Po y){
    a = x;
    b = y;
  }

  bool is_cross(line l){
    return (cross(b-a,l.a-a) * cross(b-a,l.b-a)<EPS) && (cross(l.b-l.a,a-l.a) * cross(l.b-l.a,b-l.a) < EPS);
  }
};

class polygon{
 public:
  vector<Po> v;
  int o;

  void set(void){
    v.clear();
  }

  void Vadd(Po a){
    if(!v.size())o = 0;
    else if(a.imag() < v[o].imag())o = v.size();
    v.push_back(a);
  }

  void sort(void){
    vector<double> seta;
    Po ot;
    ot.real() = 1.0;
    ot.imag() = 0.0;
    swap(v[0],v[o]);
    o = 0;
    for(int i=1;i<(int)v.size();i++){
      seta.push_back(dot(ot,v[i]-v[0]) / (abs(ot)*abs(v[i]-v[0])) );
    } 
    for(int i=1;i<(int)v.size()-1;i++){
      for(int j=i+1;j<(int)v.size();j++){
	if(seta[i-1] < seta[j-1]){
	  swap(seta[i-1],seta[j-1]);
	  swap(v[i],v[j]);
	}
      }
    }
  }

  bool inter(int num){
    int c = 0;
    double max = 0;
    Po a,b;
    line l,s;
    vector<int> tmp;

    a = v[num];
    for(int i=0;i<(int)v.size();i++){
      if(i!=num){
	if(max < v[i].real())max = v[i].real();
	if(a.imag() == v[i].imag()){
	  tmp.push_back(1);
	  v[i].imag() += 1e-6;
	}else tmp.push_back(0);
      }
    }
    b.real() = max+1;
    b.imag() = a.imag();
    s.set(a,b);
    for(int i=0;i<(int)v.size();i++){
      if(i == num){
	if(!i) l.set(v[(int)v.size()-1],v[i+1]);
	else l.set(v[i-1],v[(i+1)%(int)v.size()]);
	if(s.is_cross(l))c++;
      }else if((i+1)%(int)v.size() != num){
	l.set(v[i],v[(i+1)%v.size()]);
	if(s.is_cross(l))c++;
      }
    }
    for(int i=0;i<(int)v.size();i++){
      if(tmp[i])v[i].imag() -= 1e-6;
    }
    if(c%2)return true;
    else return false;
  }
};

int main(void){
  int n;
  int ans;
  Po p;
  polygon poly;

  while(1){
    cin >> n;
    if(!n)break;

    poly.set();
    for(int i=0;i<n;i++){
      scanf(" %lf,%lf ",&p.real(),&p.imag());
      poly.Vadd(p);
    }
    poly.sort();

    ans = 0;
    for(int i=0;i<n;i++){
      if(poly.inter(i))ans++;
    }
    cout << ans << endl;
  }

  return 0;
}