#include <bits/stdc++.h>
using namespace std;
const int maxn = 2077;
const int INF = 1E9 + 7;
int iabs(int v) { return v >= 0 ? v : -v; }
int N, A[maxn], B[maxn];
struct NODE {
  int n, p, a, b, c, d;
  bool operator<(const NODE &o) const {
    if (n != o.n)
      return n < o.n;
    else if (p != o.p)
      return p < o.p;
    else if (a != o.a)
      return a < o.a;
    else if (b != o.b)
      return b < o.b;
    else if (c != o.c)
      return c < o.c;
    else
      return d < o.d;
  }
};
map<NODE, int> dp;
int DP(NODE v) {
  if (dp.count(v)) {
    return dp[v];
  }
  int ret = INF;
  if (v.n == N && v.a == 0) return dp[v] = 0;
  for (int i = 1; i <= 9; ++i)
    if (i != v.p) {
      NODE nv = v;
      bool flag = false;
      int c = iabs(i - v.p);
      nv.p = i;
      if (nv.d == i) {
        nv.d = 0;
        ++c;
        flag = true;
      }
      if (nv.c == i) {
        nv.c = nv.d;
        nv.d = 0;
        ++c;
        flag = true;
      }
      if (nv.b == i) {
        nv.b = nv.c;
        nv.c = nv.d;
        nv.d = 0;
        ++c;
        flag = true;
      }
      if (nv.a == i) {
        nv.a = nv.b;
        nv.b = nv.c;
        nv.c = nv.d;
        nv.d = 0;
        ++c;
        flag = true;
      }
      while (nv.d == 0 && nv.n < N && A[nv.n + 1] == i) {
        int nb = B[nv.n + 1];
        if (nb <= nv.c) {
          nv.d = nb;
        } else if (nb <= nv.b) {
          nv.d = nv.c;
          nv.c = nb;
        } else if (nb <= nv.a) {
          nv.d = nv.c;
          nv.c = nv.b;
          nv.b = nb;
        } else {
          nv.d = nv.c;
          nv.c = nv.b;
          nv.b = nv.a;
          nv.a = nb;
        }
        ++nv.n;
        ++c;
        flag = true;
      }
      if (flag) {
        ret = min(ret, DP(nv) + c);
      }
    }
  return dp[v] = ret;
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; ++i) {
    scanf("%d%d", A + i, B + i);
  }
  int c = 0;
  NODE v = (NODE){0, 1, 0, 0, 0, 0};
  while (v.d == 0 && v.n < N && A[v.n + 1] == 1) {
    int nb = B[v.n + 1];
    if (nb <= v.c) {
      v.d = nb;
    } else if (nb <= v.b) {
      v.d = v.c;
      v.c = nb;
    } else if (nb <= v.a) {
      v.d = v.c;
      v.c = v.b;
      v.b = nb;
    } else {
      v.d = v.c;
      v.c = v.b;
      v.b = v.a;
      v.a = nb;
    }
    ++v.n;
    ++c;
  }
  printf("%d\n", c + DP(v));
}
