/*
* Author: Geeza
*/
#include <bits/stdc++.h>
#define ld long double
#define ll long long
#define pb push_back
#define fin(a, n) for(int i = a; i < n; i++)
#define fjn(a, n) for(int j = a; j < n; j++)
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define FAST ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
const double PI = acos(-1);
const int N = 2e5+20;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const int mod = 998244353, inf = 1e6;
string di[] = {"D","L", "U", "R", "UL", "UR", "DL", "DR"};
int dx[] = {+1, +0, +0, -1, -1, -1, +1, +1};
int dy[] = {+0, -1, +1, +0, -1, +1, -1, +1};
char dc[] = {'D', 'L', 'R', 'U'};
int n;
vector<vector<ll>> dist;
ll dp[20][20];
vector<array<ll, 3>> v;
ll calc(int idx = 0, ll mask = 1ll) {
if (mask == (1<<n)-1) {
return dist[idx][0];
}
ll &ret = dp[idx][mask];
if (~ret) return ret;
ret = oo;
for (int i = 0; i < n; i++) {
if ((mask>>i)&1) continue;
ret = min(ret, calc(i, mask|(1ll<<i))+dist[idx][i]);
}
return ret;
}
void solve() {
cin >> n;
v.assign(n, {0, 0, 0});
fin(0, n) cin >> v[i][0] >> v[i][1] >> v[i][2];
dist = vector<vector<ll>>(n, vector<ll>(n, 0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) continue;
dist[i][j] = abs(v[i][0]-v[j][0]) + abs(v[i][1]-v[j][1]) + max(0ll, v[j][2]-v[i][2]);
}
}
memset(dp, -1, sizeof dp);
cout << calc() << "\n";
}
int main() {
FAST;
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int tt = 1; //cin >> tt;
while(tt--){
solve();
}
return 0;
}
LyoKKiBBdXRob3I6IEdlZXphCiovCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaW4oYSwgbikgZm9yKGludCBpID0gYTsgaSA8IG47IGkrKykKI2RlZmluZSBmam4oYSwgbikgZm9yKGludCBqID0gYTsgaiA8IG47IGorKykKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBhbGxyKGEpIGEucmJlZ2luKCksYS5yZW5kKCkKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEpOwpjb25zdCBpbnQgTiA9IDJlNSsyMDsKY29uc3QgbGwgb28gPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBtb2QgPSA5OTgyNDQzNTMsIGluZiA9IDFlNjsKCnN0cmluZyBkaVtdID0geyJEIiwiTCIsICJVIiwgIlIiLCAiVUwiLCAiVVIiLCAiREwiLCAiRFIifTsKaW50IGR4W10gPSB7KzEsICswLCArMCwgLTEsIC0xLCAtMSwgKzEsICsxfTsKaW50IGR5W10gPSB7KzAsIC0xLCArMSwgKzAsIC0xLCArMSwgLTEsICsxfTsKY2hhciBkY1tdID0geydEJywgJ0wnLCAnUicsICdVJ307CgppbnQgbjsKdmVjdG9yPHZlY3RvcjxsbD4+IGRpc3Q7CmxsIGRwWzIwXVsyMF07CnZlY3RvcjxhcnJheTxsbCwgMz4+IHY7CgpsbCBjYWxjKGludCBpZHggPSAwLCBsbCBtYXNrID0gMWxsKSB7CiAgICBpZiAobWFzayA9PSAoMTw8biktMSkgewogICAgICAgIHJldHVybiBkaXN0W2lkeF1bMF07CiAgICB9CgogICAgbGwgJnJldCA9IGRwW2lkeF1bbWFza107CiAgICBpZiAofnJldCkgcmV0dXJuIHJldDsKICAgIHJldCA9IG9vOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpZiAoKG1hc2s+PmkpJjEpIGNvbnRpbnVlOwogICAgICAgIHJldCA9IG1pbihyZXQsIGNhbGMoaSwgbWFza3woMWxsPDxpKSkrZGlzdFtpZHhdW2ldKTsKICAgIH0KICAgIHJldHVybiByZXQ7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbjsKICAgIHYuYXNzaWduKG4sIHswLCAwLCAwfSk7CiAgICBmaW4oMCwgbikgY2luID4+IHZbaV1bMF0gPj4gdltpXVsxXSA+PiB2W2ldWzJdOwoKICAgIGRpc3QgPSB2ZWN0b3I8dmVjdG9yPGxsPj4obiwgdmVjdG9yPGxsPihuLCAwKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgIGlmIChpID09IGopIGNvbnRpbnVlOwogICAgICAgICAgICBkaXN0W2ldW2pdID0gYWJzKHZbaV1bMF0tdltqXVswXSkgKyBhYnModltpXVsxXS12W2pdWzFdKSArIG1heCgwbGwsIHZbal1bMl0tdltpXVsyXSk7CiAgICAgICAgfQogICAgfQoKICAgIG1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CiAgICBjb3V0IDw8IGNhbGMoKSA8PCAiXG4iOwp9CgppbnQgbWFpbigpIHsKICAgIEZBU1Q7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKI2VuZGlmCiAgICBpbnQgdHQgPSAxOyAvL2NpbiA+PiB0dDsKICAgIHdoaWxlKHR0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==