// Original C++ solution (slower):
#include<bits/stdc++.h>

using namespace std;



# define C continue;

# define R return



# define D double

# define I insert

# define ll long long

# define ld long double



# define ull unsigned long long

# define ui unsigned int



# define pb push_back

# define pf push_front



# define vi vector < int >

# define vc vector < char >

# define vs vector < string >

# define vb vector < bool >

# define vd vector < D >

# define vll vector < ll >

# define vull vector < ull >

# define vld vector < ld >

# define PQ priority_queue



# define vvi vector < vector < int > >

# define vvb vector < vector < bool > >

# define vvc vector < vector < char > >

# define vvs vector < vs >

# define vvll vector < vector < ll > >

# define vvd vector < vector < D > >

# define vvld vector < vector < ld > >



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

# define allrev(v) (v).rbegin() , (v).rend()

# define allcomp(v) v.begin() , v.end() , comp

# define allrevcomp(v) v.rbegin() , v.rend() , comp



# define pii pair < int , int >

# define pll pair < ll , ll >

# define pld pair < ld , ld >

# define pDD pair < D , D >



# define vpld vector < pld >

# define vpii vector < pii >

# define vpll vector < pll >

# define vpDD vector < pDD >



# define vvpii vector < vector < pii > >

# define F first

# define S second

# define mp make_pair



# define dist(a,b,p,q) sqrt((p-a)*(p-a) + (q-b)*(q-b))



# define pp(n) printf("%.10Lf",n);

# define line cout<<"\n";

# define fast ios_base::sync_with_stdio(false) ; cin.tie(0) ; cout.tie(0);



string vow = "aeiou";

int month[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};



const int dxhorse[] = {-2, -2, -1, -1, 1, 1, 2, 2};

const int dyhorse[] = {1, -1, 2, -2, 2, -2, 1, -1};



const int dx[] = { -1 , 0 , 1 , 0 } ;

const int dy[] = { 0 , 1 , 0 , -1 } ;



const ld pie = 3.1415926535897932384626 ;

const ll mod = 1e9 + 7 ;



/// Tip : If a and b are positive integers ; we may say - ceil (a/b) = 1 + floor ( (a-1)/b ) .



const int inf = 1e9 + 1e3 ;



const int N = 1e5 + 10 ;

vpii g[N] ;



vi dis ( N , inf ) ;



bool vis[N] ;



void dijk ( int node )

{

    dis[node] = 0 ;



    PQ < pll , vpll , greater < pll > > q ;

    q.push ( { 0 , 1 } ) ;



    while ( q.empty() == false )

    {

        auto temp = q.top() ;

        q.pop() ;



        node = temp.S ;

        int w = temp.F ;



        if ( vis[node] ) C ;

        vis[node] = 1 ;



        for ( auto &temp : g[node] )

        {

            int i = temp.S ;

            if ( vis[i] ) C ;



            ll relax_dis = dis[node] + temp.F ;

            if ( relax_dis < dis[i] )

            {

                dis[i] = relax_dis ;

                q.push ( { relax_dis , i } ) ;

            }

        }

    }

}



void solve ( int test_case )

{

    int n ;

    cin >> n ;



    vi v ( n + 1 ) ;



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

        cin >> v[i] ;



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

        g[i].pb ( { abs ( v[i + 1] - v[i] ) , i + 1 } ) ;



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

        g[i].pb ( { abs ( v[i + 2] - v[i] ) , i + 2 } ) ;



    dijk ( 1 ) ;



    cout << dis[n] ;

    line ;

}



int main()

{fast

    int t = 1;

    // cin >> t;



    for ( int i=1 ; i <= t ; i ++ ) solve ( i ) ;

    return 0;

}


// Optimized solution to the same problem (faster):
#include<bits/stdc++.h>

using namespace std;



# define C continue;

# define R return



# define D double

# define I insert

# define ll long long

# define ld long double



# define ull unsigned long long

# define ui unsigned int



# define pb push_back

# define pf push_front



# define vi vector < int >

# define vc vector < char >

# define vs vector < string >

# define vb vector < bool >

# define vd vector < D >

# define vll vector < ll >

# define vull vector < ull >

# define vld vector < ld >

# define PQ priority_queue



# define vvi vector < vector < int > >

# define vvb vector < vector < bool > >

# define vvc vector < vector < char > >

# define vvs vector < vs >

# define vvll vector < vector < ll > >

# define vvd vector < vector < D > >

# define vvld vector < vector < ld > >



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

# define allrev(v) (v).rbegin() , (v).rend()

# define allcomp(v) v.begin() , v.end() , comp

# define allrevcomp(v) v.rbegin() , v.rend() , comp



# define pii pair < int , int >

# define pll pair < ll , ll >

# define pld pair < ld , ld >

# define pDD pair < D , D >



# define vpld vector < pld >

# define vpii vector < pii >

# define vpll vector < pll >

# define vpDD vector < pDD >



# define vvpii vector < vector < pii > >

# define F first

# define S second

# define mp make_pair



# define dist(a,b,p,q) sqrt((p-a)*(p-a) + (q-b)*(q-b))



# define pp(n) printf("%.10Lf",n);

# define line cout<<"\n";

# define fast ios_base::sync_with_stdio(false) ; cin.tie(0) ; cout.tie(0);



string vow = "aeiou";

int month[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};



const int dxhorse[] = {-2, -2, -1, -1, 1, 1, 2, 2};

const int dyhorse[] = {1, -1, 2, -2, 2, -2, 1, -1};



const int dx[] = { -1 , 0 , 1 , 0 } ;

const int dy[] = { 0 , 1 , 0 , -1 } ;



const ld pie = 3.1415926535897932384626 ;

const ll mod = 1e9 + 7 ;



/// Tip : If a and b are positive integers ; we may say - ceil (a/b) = 1 + floor ( (a-1)/b ) .



void solve ( int test_case )

{

    int n ;

    cin >> n ;



    vi v ( n ) ;



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

        cin >> v[i] ;



    const int inf = 1e9 + 1e3 ;

    vi dp ( n , inf ) ;



    dp[0] = 0 ;



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

    {

        for ( int j : { i + 1 , i + 2 } )

        {

            if ( j < n )

                dp[j] = min ( dp[j] , dp[i] + abs ( v[i] - v[j] ) ) ;

        }

    }



    int ans = dp[n - 1] ;

    cout << ans ;



    line

}



int main()

{fast

    int t = 1;

    // cin >> t;



    for ( int i=1 ; i <= t ; i ++ ) solve ( i ) ;

    return 0;

}


// Fastest known solution for this problem: