#include <iostream>
#include <vector>
#include <algorithm>
#include <complex>
#include <climits>
#include <cmath>

#define EPS (1e-10)
#define PI (acos(-1.0))
#define EQ(a,b) (abs((a)-(b)) < EPS)
#define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) )

using namespace std;
typedef complex<double> P;

double ccw(P& p1, P& p2, P& p3)
{
	return ((p2.real() - p1.real())*(p3.imag() - p1.imag()) 
				- (p2.imag() - p1.imag())*(p3.real() - p1.real())) > 0;
}// ccw>0 => ccw, ccw=0 => colinear, ccw<0, cw

bool complex_pred(const P& a, const P& b)
{
    if (a.real() != b.real())
		return a.real() < b.real();
	else
		return a.imag() < b.imag();
}

vector<P> solve(vector<P>& vc)
{
	sort(vc.begin(), vc.end(), complex_pred);

	int k = 0;
	vector<P> vc2(vc.size()*2);
	
	for (int i = 0; i < (int)vc.size(); i++)
	{
		while( k >= 2 && ccw(vc2[k-1], vc2[k-2], vc[i]) <= 0 )
		{
			k--;
		}
		
		vc2[k]=vc[i];
		k++;
	}

	int t = k;
	
	for (int i = vc.size()-1; i >= 0; i--)
	{
		while ( k > t && ccw(vc2[k-1], vc2[k-2], vc[i]) <= 0 )
		{
			k--;
		}
		
		vc2[k]=vc[i];
		k++;
	}
	
	vc2.resize(k-1);
	return vc2;
}

int main()
{
	int n;
	
	while(cin >> n, n)
	{
		vector<P> vc;
		vc.clear();
		
		for(int i = 0; i < n; i++)
		{
			char c;
			double a, b;
			cin >> a;
			cin >> c;
			cin >> b;
			vc.push_back(P(a, b));
		}
		
		vector<P> vc2 = solve(vc);
		cout << int(n - vc2.size()) << endl;
	}
	
	return 0;
}