# 押しだしながらDPする場合

N = int(eval(input()))

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

h.extend([0,0]) # 要らない足場

dp = [0] + [1e10]*(N+1) # 初期状態だけ定義(cost0)

for i in range(N):

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

    dp[i+2] = min(dp[i+2], dp[i]+abs(h[i+2] - h[i]))

    

print((dp[N-1]))
# 押しだしながらDPする場合

N = int(eval(input()))

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

h.extend([0,0]) # 要らない足場

dp = [float("inf")]*(N+2)

dp[0] = 0 # 初期足場のコストは0

for i in range(N):

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

    dp[i+2] = min(dp[i+2], dp[i]+abs(h[i+2] - h[i]))

    

print((dp[N-1]))
# 押しだしながらDPする場合
N = int(eval(input()))
h = list(map(int, input().split()))
h.extend([0, 0])  # 要らない足場
dp = [0] + [1e10] * (N + 1)  # 初期状態だけ定義(cost0)
for i in range(N):
    dp[i + 1] = min(dp[i + 1], dp[i] + abs(h[i + 1] - h[i]))
    dp[i + 2] = min(dp[i + 2], dp[i] + abs(h[i + 2] - h[i]))
print((dp[N - 1]))

# 押しだしながらDPする場合
N = int(eval(input()))
h = list(map(int, input().split()))
h.extend([0, 0])  # 要らない足場
dp = [float("inf")] * (N + 2)
dp[0] = 0  # 初期足場のコストは0
for i in range(N):
    dp[i + 1] = min(dp[i + 1], dp[i] + abs(h[i + 1] - h[i]))
    dp[i + 2] = min(dp[i + 2], dp[i] + abs(h[i + 2] - h[i]))
print((dp[N - 1]))

-dp = [0] + [1e10] * (N + 1)  # 初期状態だけ定義(cost0) +dp = [float("inf")] * (N + 2) +dp[0] = 0  # 初期足場のコストは0