#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vb = vector<bool>;
using vvb = vector<vb>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
#define rep(i, s, n) for(int i = (int)(s); i < (int)(n); ++i)

ll INF = 1ll << 60;

ll cl[200010], cr[200010];
ll dp[200010][2];

int main(){
  int n;
  cin >> n;
  set<ll> col;
  rep(i, 0, 200010){
      cl[i] = INF;
      cr[i] = -1*INF;
  }
  rep(i, 0, n){
      ll x, c;
      cin >> x >> c;
      col.insert(c);
      if(cl[c] > x){
          cl[c] = x;
      }
      if(cr[c] < x){
          cr[c] = x;
      }
  }
  auto itr = col.begin();
  ll st = *itr;
  dp[st][0] = abs(cr[st])+abs(cr[st]-cl[st]);
  dp[st][1] = abs(cl[st])+abs(cr[st]-cl[st]);
  
  rep(i, 1, col.size()){
      ll cb = *itr;
      itr++;
      ll cn = *itr;
      dp[cn][0] = min(dp[cb][0] + abs(cr[cn]-cl[cn]) + abs(cr[cn]-cl[cb]), dp[cb][1] + abs(cr[cn]-cl[cn]) + abs(cr[cn]-cr[cb]));
      dp[cn][1] = min(dp[cb][0] + abs(cr[cn]-cl[cn]) + abs(cl[cn]-cl[cb]), dp[cb][1] + abs(cr[cn]-cl[cn]) + abs(cl[cn]-cr[cb]));
  }
  ll ls = *itr;
  ll ans = min(dp[ls][0] + abs(cl[ls]), dp[ls][1] + abs(cr[ls]));
  itr = col.begin();

  cout << ans << endl;
  
  return 0;
  
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using VI = vector<int>;
using VL = vector<ll>;
using VS = vector<string>;
template<class T> using PQ = priority_queue<T, vector<T>, greater<T>>;
#define FOR(i,a,n) for(int i=(a);i<(n);++i)
#define eFOR(i,a,n) for(int i=(a);i<=(n);++i)
#define rFOR(i,a,n) for(int i=(n)-1;i>=(a);--i)
#define erFOR(i,a,n) for(int i=(n);i>=(a);--i)
#define SORT(a) sort(a.begin(),a.end())
#define rSORT(a) sort(a.rbegin(),a.rend())
#define fSORT(a,f) sort(a.begin(),a.end(),f)
#define all(a) a.begin(),a.end()
#define out(y,x) ((y)<0||h<=(y)||(x)<0||w<=(x))
#define tp(a,i) get<i>(a)
#ifdef _DEBUG
#define line cout << "-----------------------------\n"
#define stop system("pause")
#endif
constexpr ll INF = 1000000000;
constexpr ll LLINF = 1LL << 60;
constexpr ll mod = 1000000007;
constexpr ll MOD = 998244353;
constexpr ld eps = 1e-10;
constexpr ld pi = 3.1415926535897932;
template<class T>inline bool chmax(T& a, const T& b) { if (a < b) { a = b; return true; }return false; }
template<class T>inline bool chmin(T& a, const T& b) { if (a > b) { a = b; return true; }return false; }
inline void init() { cin.tie(nullptr); cout.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(15); }
template<class T>inline istream& operator>>(istream& is, vector<T>& v) { for (auto& a : v)is >> a; return is; }
template<class T, class U>inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
template<class T>inline vector<T> vec(size_t a) { return vector<T>(a); }
template<class T>inline vector<T> defvec(T def, size_t a) { return vector<T>(a, def); }
template<class T, class... Ts>inline auto vec(size_t a, Ts... ts) { return vector<decltype(vec<T>(ts...))>(a, vec<T>(ts...)); }
template<class T, class... Ts>inline auto defvec(T def, size_t a, Ts... ts) { return vector<decltype(defvec<T>(def, ts...))>(a, defvec<T>(def, ts...)); }
template<class T>inline void print(const T& a) { cout << a << "\n"; }
template<class T, class... Ts>inline void print(const T& a, const Ts&... ts) { cout << a << " "; print(ts...); }
template<class T>inline void print(const vector<T>& v) { for (int i = 0; i < v.size(); ++i)cout << v[i] << (i == v.size() - 1 ? "\n" : " "); }
template<class T>inline void print(const vector<vector<T>>& v) { for (auto& a : v)print(a); }
inline string reversed(const string& s) { string t = s; reverse(all(t)); return t; }
template<class T>inline T sum(const vector<T>& a, int l, int r) { return a[r] - (l == 0 ? 0 : a[l - 1]); }
template<class T>inline void END(T s) { print(s); exit(0); }
void END() { exit(0); }

int main() {
    init();

    int n; cin >> n;
    int ans = 0;
    eFOR(i, 1, n) {
        int tmp = 1;
        string s = to_string(i);
        for (char c : s)if (c == '7')tmp = 0;
        int j = i;
        for (; j; j /= 8)if (j % 8 == 7)tmp = 0;
        ans += tmp;
    }
    print(ans);

    return 0;
}