#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> using namespace std; const int maxn=100100; typedef long long int LL; int n,m; LL a[maxn]; vector<int> near[maxn]; int main() { cin>>n>>m; for(int i=0;i<m;i++) { cin>>a[i]; } LL cur=0,orz; for(int i=0;i<m-1;i++) { cur+=abs(a[i+1]-a[i]); } orz=cur; for(int i=0;i<m;i++) { if(i-1>=0&&a[i-1]!=a[i]) { near[a[i]].push_back(a[i-1]); } if(i+1<m&&a[i]!=a[i+1]) { near[a[i]].push_back(a[i+1]); } } for(int i=1;i<=n;i++) { int sz=near[i].size(); if(sz) { sort(near[i].begin(),near[i].end()); LL change=0;int mid=near[i][sz/2]; for(int j=0;j<sz;j++) { change+=abs(near[i][j]-mid)-abs(near[i][j]-i); } cur=min(cur,orz+change); } } cout<<cur<<endl; return 0; }