#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

#define rep(i,n) for(int i=0;i<n;i++)

using namespace std;

struct Point
{
	double x, y;

	Point() : x(0), y(0)
	{
		return;
	}

	Point(double x,double y) : x(x), y(y)
	{
		return;
	}

	Point operator - (const Point &a) const
	{
		return Point(x - a.x,y - a.y);
	}

	bool operator < (const Point &a) const
	{
		return x == a.x ? y < a.y : x < a.x;
	}

	void input()
	{
		char c;
		cin >> x >> c >> y;
	}

	double det(const Point &a)
	{
		return x * a.y - y * a.x;
	}
};


vector< Point > convex_hull(vector< Point > ps)
{
	int N = ps.size();
	sort(ps.begin(),ps.end());

	int k = 0;
	vector<Point> convex(N*2);

	rep(i,N)
	{
		while (2 <= k && (convex[k-1] - convex[k-2]).det(ps[i] - convex[k-1]) <= 0 )
		{
			k--;
		}
		convex[k++] = ps[i];
	}

	for(int i = N-2,t = k; 0 <= i;i--)
	{
		while (t < k && (convex[k-1] - convex[k-2]).det(ps[i] - convex[k-1]) <= 0 )
		{
			k--;
		}
		convex[ k++ ] = ps[i];
	}

	convex.resize(k-1);
	return convex;
}

int main()
{
	int n;
	while (cin >> n && n)
	{
		vector< Point > ps( n );

		rep(i,n)
		{
			ps[i].input();
		}

		vector< Point > convex = convex_hull( ps );

		cout << n - convex.size() << endl;
	}

	return 0;
}