#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int INF = 1000000000;
#define REP(i,s,n) for(int i=(int)(s);i<(int)(n);i++)
#define rep(i,n) REP(i, 0, n)

typedef complex<double> P;

namespace std {
    bool operator < (const P& a, const P& b) {
        return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
    }
}

double cross(const P& a, const P& b) {
    return imag(conj(a) * b);
}

double dot(const P& a, const P& b) {
    return real(conj(a) * b);
}

int ccw(P a, P b, P c) {
    b -= a; c -= a;
    if(cross(b, c) > 0) return +1;
    if(cross(b, c) < 0) return -1;
    if(dot(b, c) < 0) return +2;
    if(norm(b) < norm(c)) return -2;
    return 0;
}

vector<P> convex_hull(vector<P> ps) {
    int n = ps.size(), k = 0;
    sort(ps.begin(), ps.end());
    vector<P> ch(n * 2);
    for(int i = 0; i < n; ch[k++] = ps[i++])
      while(k >= 2 && ccw(ch[k - 2], ch[k - 1], ps[i]) <= 0) --k;
    for(int i = n - 2, t = k + 1; i >= 0; ch[k++] = ps[i--])
      while(k >= t && ccw(ch[k - 2], ch[k - 1], ps[i]) <= 0) --k;
    ch.resize(k - 1);
    return ch;
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    int N;
    while(cin >> N && N) {
        double x_, y_; char gomi;
        vector<P> ps(N);
        rep(i, N) {
            cin >> x_ >> gomi >> y_;
            ps[i] = P(x_, y_);
        }

        cout << N - convex_hull(ps).size() << endl;
    }
    return 0;
}