What's wrong in the code

My code is giving Runtime for Problem
I don’t know why can anyone help me.

#include <bits/stdc++.h>
using namespace std ;

 vector<int> dp(100010,-1);
int fun(vector<int> p,int n){
	if(n==0) return 0;
	if(dp[n]!=-1) return dp[n];
	int ans=INT_MAX;
	if(n>=1) ans=fun(p,n-1)+abs(p[n]-p[n-1]);
	if(n>=2) ans=min(ans,fun(p,n-2)+abs(p[n-2]-p[n]));
	return dp[n]= ans;
}

void solve(){
	int n;
	cin>>n;
	vector<int> p(n);
for(int &i:p){
	cin>>i;
}
cout<<fun(p,n-1);
}
signed main() {
	int T=1;
	// cin>>T;
	for(int i=1;i <=T;i++){
		solve();
		cout<<endl;
	}
	return 0;
}