#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <algorithm>
#include <set>
#include <complex>

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,j) FOR(i,0,j)
#define mp std::make_pair

const int INF = 1 << 24;
const int dx[4] = {0, 0, 1, -1}, dy[4] = {1, -1, 0, 0};
const double EPS = 1e-9;

typedef unsigned long long ull;
typedef std::complex<double> P;

namespace std{
    bool operator<(const P& lp, const P& rp){
        if(real(lp) != real(rp)){
            return real(lp) < real(rp);
        }
        return imag(lp) < imag(rp);
    }
}    

double dot(const P& lp, const P& rp){
    return real(lp)*real(rp)+imag(lp)*imag(rp);
}

double cross(const P& lp, const P& rp){
    return real(lp)*imag(rp)-imag(lp)*real(rp);
}

int ccw(P a, P b, P c){
    b -= a; c -= a;
    if(cross(b, c) > 0)return 1; // counter clock wise
    if(cross(b, c) < 0)return -1; // clock wise
    if(dot(b, c) < 0)return 2; // B A C
    if(norm(b) < norm(c))return -2; // A B C
    return 0; // A C B
}

std::vector<P> convex_hull(std::vector<P> ps){
    int n = ps.size(), k = 0;
    std::sort(ps.begin(), ps.end());

    std::vector<P> ch(2*n);
    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(){
    int N;
    while(std::cin >> N, N){
        std::vector<P> Nails;
        REP(i, N){
            double x, y;
            scanf("%lf,%lf", &x, &y);
        
            Nails.push_back({x, y});
        }

        auto ch = convex_hull(Nails);

        std::cout << N - ch.size() << std::endl;
    }
}