#include<bits/stdc++.h>
using namespace std ;
	#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
	#define lli long long int
	#define ulli unsigned long long int
	#define ff first
	#define ss second
	#define mp make_pair
	#define pb push_back
	#define pf pop_front()
	#define lb lower_bound
	#define ub upper_bound
	#define bs binary_search
	#define rep(i,a,b) for(lli i=a;i<b;i++)
	#define repe(i,a,b) for(int i=a;i<=b;i++)
	#define all(v) v.begin(), v.end()
	#define mod 1000000007
	#define inf 100000000000000000
	#define lld long double
	#define pll pair<long long int,long long int>
	#define pii pair<int,int>
	#define vll vector<lli>
	#define vii vector<int>
	#define endl '\n'
	#define pie  acosl(-1.0);
	#define setp(k, x) fixed << setprecision(k) << (x)
	#define deb(x) cerr << #x << ": " << x << " " << endl;
	#define debug(x) cout << "m here-" <<#x<<" ..."<<"\n";
	#define printa(a,n) for(lli i=0;i<n;i++) cout<<a[i]<<" "; cout<<"\n";
  #define printv(a) for(lli i=0;i<a.size();i++) cout<<a[i]<<" "; cout<<"\n";
	bool sortcol( const vector<lli>& v1, const vector<lli>& v2 ) //sort on basis of column //use- sort(vect.begin(), vect.end(),sortcol);
      { return v1[1] < v2[1]; }//[] o based indexing in column
	bool sortpair(const pair<lli, lli> &a, const pair<lli, lli> &b)
			{return a.second < b.second;}
	struct custom_hash {
    static uint64_t splitmix64(uint64_t x) {
        // http://xorshift.di.unimi.it/splitmix64.c
        x += 0x9e3779b97f4a7c15;
        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
        return x ^ (x >> 31);
    }

    size_t operator()(uint64_t x) const {
        static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
        return splitmix64(x + FIXED_RANDOM);
    }
};
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>

//////////////////////////////////////////////////////////////////////////////////////////////
void solve();
//////////////////////////////////////////////////////////////////////////////////////////////
// lli minjump(lli *wt , lli n)
// {
//   if (n<2)
//     return inf;
//   if(n==2)
//     {
//       return abs(wt[n]-wt[n-1]);
//     }
//   if(n==3)
//   {
//
//     return min((abs(wt[n]-wt[n-2])),(abs(wt[n]-wt[n-1]) + abs(wt[n-1]-wt[n-2])));
//   }
//
//   return   min(abs(wt[n]-wt[n-1])+minjump(wt,n-1) ,  abs(wt[n]-wt[n-2]) + minjump(wt,n-2));
//
// }

int main ()
{
	fastio
 	// lli  t;
 	// cin>>t;
 	// while(t--)
 	{
	solve();

 	}
}
///////////////////////////////////////////
void solve()
{
	lli n,i,d,a,b,c,j,k;
  cin>>n;

  lli wt[n+1],val[n+1],W;
  rep(i,1,n+1)cin>>wt[i];

  // printa(wt,n+1);
  lli dp[n+2];
  for(i=0;i<n+1;i++)
  {
    if(i<2)
      {
        dp[i]=inf;
        continue;
      }
    if(i==2)
        {
          dp[i]= abs(wt[i]-wt[i-1]);
          continue;
        }
    if(i==3)
          {
            dp[i]=  min((abs(wt[i]-wt[i-2])),(abs(wt[i]-wt[i-1]) + abs(wt[i-1]-wt[i-2])));
            continue;
          }

  dp[i]= min(abs(wt[i]-wt[i-1])+dp[i-1] ,  abs(wt[i]-wt[i-2]) + dp[i-2]);
  }

  // printa(dp,n+1)
  // a= minjump(wt,n);
  cout<<dp[n]<<"\n";







}


Measured memory_bytes: 1792