#include <bits/stdc++.h>
using namespace std;
int dp[3003][3];
bool u[3003];
vector<pair<int, int> > g[3003];
void dfs(int v) {
  int nv, i, d1 = 0, d2 = 0;
  dp[v][0] = 0;
  u[v] = 1;
  for (i = 0; i < g[v].size(); i++) {
    nv = g[v][i].first;
    if (u[nv]) continue;
    dfs(nv);
    int t = g[v][i].second;
    dp[v][0] += t + dp[nv][0];
    d1 = min(d1, dp[nv][1] + 1 - t - dp[nv][0] - t);
    d2 = min(d2,
             min(dp[nv][2] + t - (dp[nv][0] + t), dp[nv][1] - (dp[nv][0] + t)));
  }
  dp[v][1] = dp[v][0] + d1;
  dp[v][2] = dp[v][0] + d2;
}
int main() {
  int n, i, a, b;
  while (~scanf("%d", &n)) {
    for (i = 1; i < n; i++) {
      scanf("%d%d", &a, &b);
      a--, b--;
      g[a].push_back(make_pair(b, 0));
      g[b].push_back(make_pair(a, 1));
    }
    int ans = 3000;
    for (i = 0; i < n; i++) {
      memset(u, 0, sizeof(u));
      dfs(i);
      ans = min(ans, min(dp[i][0], min(dp[i][1], dp[i][2])));
    }
    printf("%d\n", ans);
  }
  return 0;
}
