#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
#include <vector>
#include <complex>
#include <algorithm>
#define rep(i,n) for(int (i)=0;(i)<(int)n;(i)++)
#define each(i,o) for (__typeof((o).begin()) i = (o).begin(); i != (o).end(); ++i)
#define mp make_pair
#define ALL(x) (x).begin(), (x).end()
#define RALL(x) (x).rbegin(), (x).rend()
#define SORT(x) sort((x).begin(), (x).end())

using namespace std;

const double EPS = 1e-8;
const double INF = 1e12;

class Point
{
public:
  double y,x;
  Point(){y = x = 0.0;}
  Point(double iy, double ix){y = iy; x = ix;}
  Point(double theta){y = sin(theta); x = cos(theta);}
  Point operator+(const Point& p) const{return Point(y+p.y,x+p.x);}
  Point operator-(const Point& p) const{return Point(y-p.y,x-p.x);}
  void operator+=(const Point& p) {y+=p.y;x+=p.x;}
  void operator-=(const Point& p) {y-=p.y;x-=p.x;}
  Point operator*(double a) const{return Point(y*a,x*a);}
  Point operator/(double a) const{return Point(y/a,x/a);}
  bool operator<(const Point& p) const{return y!=p.y ? y<p.y : x<p.x;}
  double length() const{return sqrt(x*x+y*y);}
  double dist(const Point& p) const{return sqrt(pow(y-p.y,2)+pow(x-p.x,2));}
  double dot(const Point& p) const{return y*p.y+x*p.x;}
  double cross(const Point& p) const{return y*p.x-x*p.y;}
  double angle() const{return atan2(y,x);}
};

double ccw(const Point& a, const Point& b, const Point& c){return (b-a).cross(c-a);}

template<class IN>
void walk_cw(IN begin, IN end, vector<Point>& v) {
    IN cur = begin;
    v.push_back(*cur++);
    vector<Point>::size_type s = v.size();
    v.push_back(*cur++);
    while(cur != end) {
        if (v.size() == s || ccw(v[v.size()-2], v.back(), *cur) > EPS)
            v.push_back(*cur++);
        else
            v.pop_back();
    }
    v.pop_back();
}

vector<Point> convex_hull(vector<Point> vp){
  int n = vp.size();
  int k = 0;
  vector<Point> ret;
  sort(vp.begin(),vp.end());

  walk_cw(vp.begin(), vp.end(), ret);
  walk_cw(vp.rbegin(), vp.rend(), ret);

  return ret;
}

int main(int argc, char const *argv[]){
  int n;
  while(true){
    cin >> n;
    if(n==0) break;

    vector<Point> vp(n);
    rep(i,n) scanf("%lf,%lf",&(vp[i].x),&(vp[i].y));

    vector<Point> ans = convex_hull(vp);
    cout << (vp.size()-ans.size()) << endl;
  }
  return 0;
}