#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>

using namespace std;

class Point {
public:
	double x;
	double y;
};

Point pointStack[101];
const double esp = 1e-10;

bool cmpPoint(Point p1, Point p2) {
	if (fabs(p1.y-p2.y) > esp) {
		return p1.y < p2.y;
	}
	else {
		return p1.x < p2.x;
	}
}

bool cmpAngle(Point p1, Point p2) {
	double k1, k2;

	k1 = atan2(p1.y - pointStack[0].y, p1.x - pointStack[0].x);
	k2 = atan2(p2.y - pointStack[0].y, p2.x - pointStack[0].x);
	if (fabs(k1-k2) > esp) {
		return k1 < k2;
	}
	else {
		if (p1.x > 0 || p2.x > 0) {
			return p1.x < p2.x;
		}
		return p1.x > p2.x;
	}
}

double Cross(Point p0, Point p1, Point p2) {
	double result;

	result = (p2.x - p0.x) * (p1.y - p0.y) - (p1.x - p0.x) * (p2.y - p0.y);
	if (fabs(result) < esp) {
		return 0;
	}
	else if (result > esp) {
		return 1;
	}
	else {
		return -1;
	}
}

int main(void) {
	int n, i, top;
	Point pointSet[101];
	char c;

	while (1) {
		cin >> n;
		if (n == 0) {
			break;
		}

		memset(pointSet, 0, sizeof(pointSet));
		memset(pointStack, 0, sizeof(pointStack));	
		for (i = 0; i < n; i++) {
			cin >> pointSet[i].x >> c >> pointSet[i].y;
		}

		sort(pointSet, pointSet + n, cmpPoint);
		pointStack[0] = pointSet[0];

		sort(pointSet + 1, pointSet + n, cmpAngle);
		pointStack[1] = pointSet[1];
		pointStack[2] = pointSet[2];
		pointSet[n] = pointSet[0];

		top = 2;
		for (i = 3; i <= n; i++) {
			while (top > 1 && (Cross(pointStack[top - 1], pointStack[top], pointSet[i]) >= 0)) {
				top--;
			}
			pointStack[++top] = pointSet[i];
		}

		cout <<n - top << endl;
	}


	return 0;
}


