#include<iostream>
#include<vector>

using namespace std;

class point
{
public:
	double x,y;
	bool used;
	point()
	{
		used=false;
	}
	void input()
	{
		char c;
		cin>>x>>c>>y;
	}
};

point *getmin(vector<point> *p)
{
	int min=0;
	for(int i=0;i<p->size();i++)
	{
		if(p->at(i).x<p->at(min).x)
		{
			min=i;
		}
	}
	return &p->at(min);
}

point sub(point *a, point *b)
{
	point ans;
	ans.x=a->x-b->x;
	ans.y=a->y-b->y;
	return ans;
}

double cross(point a, point b)
{
	return a.x*b.y-a.y*b.x;
}

bool allleft(point *a, point *b, vector<point> *v)
{
	for(int i=0;i<v->size();i++)
	{
		if(&v->at(i)!=a&&&v->at(i)!=b)
		{
			if(cross(sub(b,a),sub(&v->at(i),a))<=0)return false;
		}
	}
	return true;
}

point *getnextpoint(point *p,vector<point> *v)
{
	for(int i=0;i<v->size();i++)
	{
		if(p!=&v->at(i)&&allleft(p,&v->at(i),v))
		{
			return &v->at(i);
		}
	}
}

int solve(vector<point> *p)
{
	point *ptr=getmin(p);
	while(ptr->used==false)
	{
		ptr->used=true;
		ptr=getnextpoint(ptr,p);
	}
	int n=0;
	for(int i=0;i<p->size();i++)
	{
		if(p->at(i).used==false)n++;
	}
	return n;
}

int main(void)
{
	while(1)
	{
		int n;
		cin>>n;
		if(n==0)break;
		vector<point> p(n);
		for(int i=0;i<n;i++) p[i].input();
		cout<<solve(&p)<<endl;
	}
}