n=int(eval(input()))

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



# dp には 足場(i)へ至る最小コストが入る。

dp=[float("inf")]*(n)

dp[0]=0

for i in range(n-1):

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

  if i+2 < n:

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

    

print((dp[-1]))

    



# 参考：

# https://qiita.com/drken/items/dc53c683d6de8aeacf5a



# ver 2,振り返る DP



n=int(eval(input()))

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



# dp には 足場(i)へ至る最小コストが入る。

dp=[float("inf")]*(n)



# 振り返り起点(i==2)までのdp値は埋めておく。

dp[0]=0

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

for i in range(2,n):

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

print((dp[-1]))

n = int(eval(input()))
a = list(map(int, input().split()))
# dp には 足場(i)へ至る最小コストが入る。
dp = [float("inf")] * (n)
dp[0] = 0
for i in range(n - 1):
    dp[i + 1] = min(dp[i + 1], dp[i] + abs(a[i] - a[i + 1]))
    if i + 2 < n:
        dp[i + 2] = min(dp[i + 2], dp[i] + abs(a[i] - a[i + 2]))
print((dp[-1]))

# 参考：
# https://qiita.com/drken/items/dc53c683d6de8aeacf5a
# ver 2,振り返る DP
n = int(eval(input()))
a = list(map(int, input().split()))
# dp には 足場(i)へ至る最小コストが入る。
dp = [float("inf")] * (n)
# 振り返り起点(i==2)までのdp値は埋めておく。
dp[0] = 0
dp[1] = abs(a[1] - a[0])
for i in range(2, n):
    dp[i] = min(dp[i - 1] + abs(a[i] - a[i - 1]), dp[i - 2] + abs(a[i] - a[i - 2]))
print((dp[-1]))

+# 参考： +# https://qiita.com/drken/items/dc53c683d6de8aeacf5a +# ver 2,振り返る DP +# 振り返り起点(i==2)までのdp値は埋めておく。 -for i in range(n - 1): -    dp[i + 1] = min(dp[i + 1], dp[i] + abs(a[i] - a[i + 1])) -    if i + 2 < n: -        dp[i + 2] = min(dp[i + 2], dp[i] + abs(a[i] - a[i + 2])) +dp[1] = abs(a[1] - a[0]) +for i in range(2, n): +    dp[i] = min(dp[i - 1] + abs(a[i] - a[i - 1]), dp[i - 2] + abs(a[i] - a[i - 2]))