// Slower C++ solution:
#include <bits/stdc++.h>

#define pii pair<int,int>

#define vi vector<int>

#define ppii pair<pii>



using namespace std;

const int maxn=1e5+5;



int n;

vi arr;

int dp[maxn];



int dfs(int pos)

{

    if(pos==n){return 0;}



    if(dp[pos]!=-1)return dp[pos];



    int ans=(1<<29);



    if(pos<n)

        ans=min(ans,dfs(pos+1) + abs(arr[pos]-arr[pos+1]));

    if(pos<n-1)

        ans=min(ans,dfs(pos+2) + abs(arr[pos]-arr[pos+2]));

    dp[pos]=ans;



    return ans;

}



int main()

{

    ios_base::sync_with_stdio(0);

    cin.tie(0);cout.tie(0);



    cin>>n;



    arr=vi(n+1);



    for(int i=1;i<=n;i++)

        cin>>arr[i];



    memset(dp,-1,sizeof dp);



    cout<<dfs(1);



    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 1.411572060416614x):




/******************************************************/

/******************************************************/

/**                                                  **/

/**            BISMILLAHIR RAHMANIR RAHIM            **/

/**         REAZ AHAMMED CHOWDHURY - reaziii         **/

/**  Department of Computer Science and Engineering  **/

/*         INSTITUTE OF SCIENCE AND TECHNOLOGY       **/

/**                                                  **/

/******************************************************/

/******************************************************/







#include<bits/stdc++.h>

#define sc(x)        scanf("%lld",&x)

#define pcase(x)     printf("Case %d: ",x++)

#define pn           printf("\n")

#define fri(f)       for(int i=0;i<f;i++)

#define frj(f)       for(int j=0;j<f;j++)

#define reset(x,e)   memset(x,e,sizeof(x))

#define all(x)       x.begin(),x.end()

#define input        freopen("input.txt","r",stdin);

#define output       freopen("output.txt","w",stdout)

#define infi         INT_MAX

#define m_v          3000000

#define pii          pair<int,int>

#define pch          pair<char,char>

#define pll          pair<ll,ll>

#define mgraph       map<int,vector<int> >

#define mp           make_pair

#define pb           push_back

#define clr(x)       memset(x,0,sizeof(x))

#define frx(x,y)     for(int x=0;x<y;x++)

#define ff           first

#define ss           second

using namespace std;

typedef long long int ll;

typedef unsigned long long int ull;

bool checkbitt(ll num, int pos);

ll setbitt(ll num, ll pos);

ll resetbitt(ll num, int pos);

void read(int *aa, int sz) {fri(sz) scanf("%d", (aa + i));}

void read(ll *aa, int sz) {fri(sz) scanf("%lld", (aa + i));}

void read(ll *aa, int s, int e) {for (int i = s; i < s + e; i++)scanf("%lld", (aa + i));}

void read(int *aa, int s, int e) {for (int i = s; i < s + e; i++)scanf("%d", (aa + i));}

const ll mod =       1e9 + 7;

const ll N =     1e6 + 10;



//.................___Start from here___.................//

//.................._____________________................//





int solve() {

	int n;

	cin >> n;

	int arr[n + 1];

	read(arr, 1, n);



	int dp[n + 100];

	clr(dp);



	for (int i = n - 1; i >= 1; i--) {

		int op1 = abs(arr[i] - arr[i + 1]) + dp[i + 1];

		int op2 = infi;



		if (i <= n - 2) {

			op2 = abs(arr[i] - arr[i + 2]) + dp[i + 2];

		}

		dp[i] = min(op1, op2);

	}



	cout << dp[1] << endl;





	return 0;

}

int main() {

// #ifndef ONLINE_JUDGE

// 	input;

// 	output;

// #endif

// #ifdef ONLINE_JUDGE

// 	ios_base::sync_with_stdio(false);

// 	cin.tie(0);

// #endif

	int cs = 1;

	int cn = 1;

	//cin>>cs;

	while (cs--) {

		solve();



	}

}





bool checkbitt(ll num, int pos) {return (num >> pos) & 1;}

ll setbitt(ll num, ll pos) {return (1 << pos) | num;}

ll resetbitt(ll num, int pos) {if (!checkbitt(num, pos)) return num; else return (1 << pos)^num;}