N = int(eval(input()))

H = list(map(int,input().split()))

import sys

import functools

#indexi番目にいるときの最小コスト

sys.setrecursionlimit(pow(10,6))



@functools.lru_cache(None)

def func(i):

    if i==0:

        return 0

    if i==1:

        return abs(H[0]-H[1])

    return min(func(i-1)+abs(H[i]-H[i-1]),func(i-2)+abs(H[i-2]-H[i]))



print((func(N-1)))

N = int(eval(input()))

H = list(map(int,input().split()))



dp = [0]*N

dp[1]= abs(H[1]-H[0])

#dp[i] インデックスiにいるときの最小値





for i in range(1,N-1):

    dp[i+1]=min(dp[i]+abs(H[i+1]-H[i]),dp[i-1]+abs(H[i+1]-H[i-1]))



print((dp[N-1]))
N = int(eval(input()))
H = list(map(int, input().split()))
import sys
import functools

# indexi番目にいるときの最小コスト
sys.setrecursionlimit(pow(10, 6))


@functools.lru_cache(None)
def func(i):
    if i == 0:
        return 0
    if i == 1:
        return abs(H[0] - H[1])
    return min(func(i - 1) + abs(H[i] - H[i - 1]), func(i - 2) + abs(H[i - 2] - H[i]))


print((func(N - 1)))

N = int(eval(input()))
H = list(map(int, input().split()))
dp = [0] * N
dp[1] = abs(H[1] - H[0])
# dp[i] インデックスiにいるときの最小値
for i in range(1, N - 1):
    dp[i + 1] = min(dp[i] + abs(H[i + 1] - H[i]), dp[i - 1] + abs(H[i + 1] - H[i - 1]))
print((dp[N - 1]))

-import sys -import functools - -# indexi番目にいるときの最小コスト -sys.setrecursionlimit(pow(10, 6)) - - -@functools.lru_cache(None) -def func(i): -    if i == 0: -        return 0 -    if i == 1: -        return abs(H[0] - H[1]) -    return min(func(i - 1) + abs(H[i] - H[i - 1]), func(i - 2) + abs(H[i - 2] - H[i])) - - -print((func(N - 1))) +dp = [0] * N +dp[1] = abs(H[1] - H[0]) +# dp[i] インデックスiにいるときの最小値 +for i in range(1, N - 1): +    dp[i + 1] = min(dp[i] + abs(H[i + 1] - H[i]), dp[i - 1] + abs(H[i + 1] - H[i - 1])) +print((dp[N - 1]))