#include <bits/stdc++.h>
const long long mod = 1000000007L;
using namespace std;
double EPS = 1e-12;
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  PT(const PT &p) : x(p.x), y(p.y) {}
  PT operator+(const PT &p) const { return PT(x + p.x, y + p.y); }
  PT operator-(const PT &p) const { return PT(x - p.x, y - p.y); }
  PT operator*(double c) const { return PT(x * c, y * c); }
  PT operator/(double c) const { return PT(x / c, y / c); }
};
int x[200010], y[200010];
std::vector<PT> vec;
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist2(PT p, PT q) { return dot(p - q, p - q); }
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
PT ProjectPointSegment(PT a, PT b, PT c) {
  double r = dot(b - a, b - a);
  if (fabs(r) < EPS) return a;
  r = dot(c - a, b - a) / r;
  if (r < 0) return a;
  if (r > 1) return b;
  return a + (b - a) * r;
}
bool PointInPolygon(const vector<PT> &p, PT q) {
  bool c = 0;
  for (int i = 0; i < p.size(); i++) {
    int j = (i + 1) % p.size();
    if ((p[i].y <= q.y && q.y < p[j].y || p[j].y <= q.y && q.y < p[i].y) &&
        q.x < p[i].x + (p[j].x - p[i].x) * (q.y - p[i].y) / (p[j].y - p[i].y))
      c = !c;
  }
  return c;
}
bool PointOnPolygon(const vector<PT> &p, PT q) {
  for (int i = 0; i < p.size(); i++)
    if (dist2(ProjectPointSegment(p[i], p[(i + 1) % p.size()], q), q) < EPS)
      return true;
  return false;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i <= n; i++) {
    PT p;
    cin >> p.x >> p.y;
    x[i] = p.x;
    y[i] = p.y;
    if (i != n) vec.push_back(p);
  }
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    int X = x[i];
    int Y = y[i];
    int nX = x[i + 1];
    int nY = y[i + 1];
    if (X == nX) {
      if (nY > Y) {
        if (PointInPolygon(vec, PT(nX, nY + .5)))
          cnt++;
        else if (PointOnPolygon(vec, PT(nX, nY + .5)))
          cnt++;
      } else {
        if (PointInPolygon(vec, PT(nX, nY - .5)))
          cnt++;
        else if (PointOnPolygon(vec, PT(nX, nY - .5)))
          cnt++;
      }
    } else if (Y == nY) {
      if (nX > X) {
        if (PointInPolygon(vec, PT(nX + 0.5, nY)))
          cnt++;
        else if (PointOnPolygon(vec, PT(nX + .5, nY)))
          cnt++;
      } else {
        if (PointInPolygon(vec, PT(nX - .5, nY)))
          cnt++;
        else if (PointOnPolygon(vec, PT(nX - .5, nY)))
          cnt++;
      }
    }
  }
  cout << cnt << endl;
  return 0;
}
