#include <bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<n;i++)
#define repb(i,a,b) for(int i=a;i>=b;i--)
#define all(a) a.begin(),a.end()
#define o(a) cout<<a<<endl
#define int long long
#define fi first
#define se second
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;

double EPS=1e-10;
double add(double a,double b){
	if(abs(a+b)<EPS*(abs(a)+abs(b))) return 0;
	return a+b;
}
struct P{
	double x, y;
	P() {}
	P (double x, double y) : x(x), y(y) {}
	P operator + (P p){
		return P(add(x, p.x), add(y, p.y));
	} 
	P operator - (P p){
		return P(add(x, -p.x), add(y, -p.y));
	}
	P operator * (double d){
		return P(x * d, y * d);
	}
	double dot(P p){  //??????
		return add(x * p.x, y * p.y);
	}
	double det(P p){  //??????
		return add(x * p.y, -y * p.x);
	}
};
//???????????§??????
bool cmp_x(const P& p, const P& q){
	if(p.x != q.x) return p.x < q.x;
	return p.y < q.y;
}
//??????????±???????
vector<P> convex_hull(P* ps, int n){
	sort(ps, ps + n, cmp_x);
	int k = 0;  //?????????????????°
	vector<P> qs(n * 2);  //?§????????????????
	//?????´???????????????
	for(int i = 0; i < n; i++){
		while(k > 1 && (qs[k - 1] - qs[k - 2]).det(ps[i] - qs[k - 1]) <= 0) k--;
		qs[k++] = ps[i];
	}
	//?????´???????????????
	for(int i = n - 2, t = k; i >= 0; i--){
		while(k > t && (qs[k - 1] - qs[k - 2]).det(ps[i] - qs[k - 1]) <= 0) k--;
		qs[k++] = ps[i];
	}
	qs.resize(k - 1);
	return qs;
}

int n;
P ps[100];

signed main() {
	while(cin >> n && n){
		rep(i, 0, n){
			double x, y;
			char c;
			cin >> x >> c >> y;
			ps[i] = P(x, y);
		}
		vector<P> qs = convex_hull(ps, n);
		cout<< n - qs.size() <<endl;
	}
}