import sys 

sys.setrecursionlimit(10**5+10)



n = int(eval(input()))

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

f_inf = float("inf")

dp = [f_inf] *(10**5 +10)



def chmin(a,b):

    if a<b:

        return a

    else:

        return b



def rec(i):

    if dp[i] < f_inf: #更新されてたらそのまま返す

        return dp[i]



    if i == 0 :

        return 0

    

    res = f_inf



    res = chmin(res, rec(i-1) + abs(h[i]-h[i-1]))

    if i > 1:

        res = chmin(res, rec(i-2) + abs(h[i]-h[i-2]))

    dp[i] = res



    return res

print((rec(n-1)))

n = int(eval(input()))

h = [int(i) for i in input().split()]

# dpの最小値を変更する関数

def chmin(a, b):

    if a > b:

        return b

    else:

        return a

    

# 無限大の値

f_inf = float('inf')

# DP テーブルを初期化　(最小化問題なので INF に初期化)

dp = [f_inf] * (10**5+10)

# 初期条件

dp[0] = 0

# 足場 i-1 から足場 i へ移動する。コストは|h[i]−h[i-1]|

# 足場 i-2 から足場 i へと移動する コストは |h[i]−h[i-2]|

for i in range(1, n):

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

    # 一番目の足場では一つ前しか存在しない

    if i > 1:

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

print((dp[n-1]))
import sys

sys.setrecursionlimit(10**5 + 10)
n = int(eval(input()))
h = list(map(int, input().split()))
f_inf = float("inf")
dp = [f_inf] * (10**5 + 10)


def chmin(a, b):
    if a < b:
        return a
    else:
        return b


def rec(i):
    if dp[i] < f_inf:  # 更新されてたらそのまま返す
        return dp[i]
    if i == 0:
        return 0
    res = f_inf
    res = chmin(res, rec(i - 1) + abs(h[i] - h[i - 1]))
    if i > 1:
        res = chmin(res, rec(i - 2) + abs(h[i] - h[i - 2]))
    dp[i] = res
    return res


print((rec(n - 1)))

n = int(eval(input()))
h = [int(i) for i in input().split()]
# dpの最小値を変更する関数
def chmin(a, b):
    if a > b:
        return b
    else:
        return a


# 無限大の値
f_inf = float("inf")
# DP テーブルを初期化　(最小化問題なので INF に初期化)
dp = [f_inf] * (10**5 + 10)
# 初期条件
dp[0] = 0
# 足場 i-1 から足場 i へ移動する。コストは|h[i]−h[i-1]|
# 足場 i-2 から足場 i へと移動する コストは |h[i]−h[i-2]|
for i in range(1, n):
    dp[i] = chmin(dp[i], dp[i - 1] + abs(h[i] - h[i - 1]))
    # 一番目の足場では一つ前しか存在しない
    if i > 1:
        dp[i] = chmin(dp[i], dp[i - 2] + abs(h[i] - h[i - 2]))
print((dp[n - 1]))

-import sys - -sys.setrecursionlimit(10**5 + 10) -h = list(map(int, input().split())) -f_inf = float("inf") -dp = [f_inf] * (10**5 + 10) +h = [int(i) for i in input().split()] +# dpの最小値を変更する関数 +def chmin(a, b): +    if a > b: +        return b +    else: +        return a -def chmin(a, b): -    if a < b: -        return a -    else: -        return b - - -def rec(i): -    if dp[i] < f_inf:  # 更新されてたらそのまま返す -        return dp[i] -    if i == 0: -        return 0 -    res = f_inf -    res = chmin(res, rec(i - 1) + abs(h[i] - h[i - 1])) +# 無限大の値 +f_inf = float("inf") +# DP テーブルを初期化　(最小化問題なので INF に初期化) +dp = [f_inf] * (10**5 + 10) +# 初期条件 +dp[0] = 0 +# 足場 i-1 から足場 i へ移動する。コストは|h[i]−h[i-1]| +# 足場 i-2 から足場 i へと移動する コストは |h[i]−h[i-2]| +for i in range(1, n): +    dp[i] = chmin(dp[i], dp[i - 1] + abs(h[i] - h[i - 1])) +    # 一番目の足場では一つ前しか存在しない -        res = chmin(res, rec(i - 2) + abs(h[i] - h[i - 2])) -    dp[i] = res -    return res - - -print((rec(n - 1))) +        dp[i] = chmin(dp[i], dp[i - 2] + abs(h[i] - h[i - 2])) +print((dp[n - 1]))