#include <iostream>
#include <algorithm>
using namespace std;

struct point {
	double x;
	double y;
};

double theta(point p0, point p1){
	double dx = p1.x - p0.x, ax = max(dx, -dx);
	double dy = p1.y - p0.y, ay = max(dy, -dy);
	double t = (ax + ay == 0) ? 0 : dy / (ax + ay);
	if(dx < 0) t = 2 - t;
	else if(dy < 0) t = 4 + t;
	return t * 90.0;
}

void swap(point ps[], int i, int j){
	double tx = ps[i].x, ty = ps[i].y;
	ps[i].x = ps[j].x; ps[i].y = ps[j].y;
	ps[j].x = tx; ps[j].y = ty;
}


int wrap(point ps[], int n){
	int i, min, M;
	double th, v;
	for(min = 0, i = 1; i < n; i++)
		if(ps[i].y < ps[min].y) min = i;
	ps[n] = ps[min]; th = 0.0;
	for(M = 0; M < n; M++){
		swap(ps, M, min);
		min = n; v = th; th = 360.0;
		for(i = M+1; i <= n; i++)
			if(theta(ps[M], ps[i]) > v)
				if(theta(ps[M], ps[i]) < th)
				{
					min = i; th = theta(ps[M], ps[min]); 
				}
		if ( min == n) return M + 1;
	}
}

int main(){
	int n;
	char c;
	point ps[101];
	while(cin >> n){
		if(n == 0) break;
		for(int i = 0; i < n; i++){
			cin >> ps[i].x >> c >> ps[i].y;
		}
		cout << n - wrap(ps, n) << endl;
	}
	return 0;
}