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

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

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

double area(Po a,Po b,Po c){return abs(cross(b-a,c-a)/2);}

bool inter(Po a,Po b,Po c,Po x){
  if( area(a,b,x) + area(b,c,x) + area(c,a,x) > area(a,b,c) +EPS)return false;
  else return true;
}

int main(void){
  int i,j,k,l;
  int n;
  int ans;
  bool use[100];
  Po p[100];

  while(1){
    scanf(" %d ",&n);
    if(!n)break;

    for(i=0;i<n;i++){
      scanf(" %lf,%lf ",&p[i].real(),&p[i].imag());
      use[i] = false;
    }

    ans = 0;
    for(i=0;i<n-3;i++){
      for(j=i+1;j<n-2;j++){
	for(k=j+1;k<n-1;k++){
	  for(l=k+1;l<n;l++){
	    if(!use[l]){
	      if(inter(p[i],p[j],p[k],p[l])){
		ans++;
		use[l] = true;
	      }
	    }
	    if(!use[k]){
	      if(inter(p[i],p[j],p[l],p[k])){
		ans++;
		use[k] = true;
	      }
	    }
	    if(!use[j]){
	      if(inter(p[i],p[l],p[k],p[j])){
		ans++;
		use[j] = true;
	      }
	    }
	    if(!use[i]){
	      if(inter(p[l],p[j],p[k],p[i])){
		ans++;
		use[i] = true;
	      }
	    }
	  }
	}
      }
    }
    cout << ans << endl;
  }

}