#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define MAXN 32767
typedef struct {
int t, v;
} Node;
int g_n;
Node g_data[MAXN];
static int Cmp(void *a, void *b)
{
Node *pre = (Node*)a;
Node *next = (Node*)b;
return pre->v - next->v;
}
static int Min(int a, int b)
{
if (a < b) {
return a;
}
return b;
}
static int FindMinDiff(int ind)
{
if (g_data[ind].t == 0) {
return abs(g_data[ind].v);
}
int ret = 0x3f3f3f3f;
int l = ind - 1, r = ind + 1;
for (; l >= 0; l--) {
if (g_data[l].t < g_data[ind].t) {
break;
}
}
if (l >= 0) {
ret = abs(g_data[l].v - g_data[ind].v);
}
for (; r < g_n; r++) {
if (g_data[r].t < g_data[ind].t) {
break;
}
}
if (r < g_n) {
ret = Min(ret, abs(g_data[r].v - g_data[ind].v));
}
return ret;
}
int main()
{
scanf("%d", &g_n);
for (int i = 0; i < g_n; i++) {
scanf("%d", &(g_data[i].v));
g_data[i].t = i;
}
qsort(g_data, g_n, sizeof(Node), Cmp);
int ans = 0;
for (int i = 0; i < g_n; i++) {
ans = ans + FindMinDiff(i);
}
printf("%d\n", ans);
return 0;
}