#include <bits/stdc++.h>
using namespace std;
// int CD(int n, vector<int>&v, vector<int>&dp){
// if(n==0)return 0;
// if(dp[n]!=-1)return dp[n];
// int left=CD(n-1, v, dp)+abs(v[n-1]-v[n]), right=INT_MAX;
// if(n>1){
// right=CD(n-2, v, dp)+abs(v[n-2]-v[n]); ///Using Recursion (memoization)
// }
// return dp[n]=min(left, right);
// }
// int frogJump(int n, vector<int> &heights){
// vector<int>dp(n+1, -1), v;
// return CD(n-1, heights, dp);
// }
// int frogJump(int n, vector<int> &heights){
// vector<int>dp(n, 0), v;
// v=heights;
// int ans=0;
// for(int i=1; i<n; i++){
// int left=dp[i-1]+abs(v[i-1]-v[i]), right=INT_MAX; ///Using iteration (tabulation)
// if(i>1)right=dp[i-2]+abs(v[i-2]-v[i]);
// dp[i]=min(left, right);
// }
// return dp[n-1];
// }
int frogJump(int n, vector<int> &heights){
vector<int>v;
v=heights;
int a1=0, a2, cur;
for(int i=1; i<n; i++){
int left=a1+abs(v[i-1]-v[i]), right=INT_MAX;
if(i>1)right=a2+abs(v[i-2]-v[i]);
cur=min(left, right);
a2=a1;
a1=cur;
}
return a1;
}