#include <bits/stdc++.h>
using namespace std;
const int N = 2005;
int n, a[N], b[N];
int rcd[N][10][10][10][10];
int dfs(int k, int d1, int d2, int d3, int d4, int f) {
  if (k == n + 1 && d2 + d3 + d4 == 0) return 0;
  int ret = 0x3f3f3f3f;
  int d[5] = {0, d1, d2, d3, d4};
  int& ans = rcd[k][d2][d3][d4][f];
  if (d[1] > 0)
    ret = min(ret, dfs(k, 0, d[2], d[3], d[4], d[1]) + abs(d[1] - f) + 1);
  if (d[2] > 0)
    ret = min(ret, dfs(k, 0, d[1], d[3], d[4], d[2]) + abs(d[2] - f) + 1);
  if (d[3] > 0)
    ret = min(ret, dfs(k, 0, d[1], d[2], d[4], d[3]) + abs(d[3] - f) + 1);
  if (d[4] > 0)
    ret = min(ret, dfs(k, 0, d[1], d[2], d[3], d[4]) + abs(d[4] - f) + 1);
  if (d[1] != 0) return ret;
  if (ans >= 0) return ans;
  if (k <= n) {
    d[1] = b[k];
    sort(d + 1, d + 5);
    ret =
        min(ret, dfs(k + 1, d[1], d[2], d[3], d[4], a[k]) + abs(a[k] - f) + 1);
  }
  return ans = ret;
}
int main() {
  memset(rcd, 0xff, sizeof(rcd));
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &a[i], &b[i]);
  }
  cout << dfs(1, 0, 0, 0, 0, 1) << endl;
  return 0;
}
