#include<bits/stdc++.h>
#define ll long long
#define i128 __int128
#define ull unsigned long long
#define pii pair<int,int>
#define pll pair<long long, long long>
#define fs first
#define sc second
#define endl '\n'
#define debug puts("AK IOI")
#define re register
#define pb push_back
#define mem(a,x) memset((a),(x),sizeof(a))
#define vi vector<int>
using namespace std;
#define int long long
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f, N = 8e5 + 5, M = 2e5 + 5;
const ll linf = 0x3f3f3f3f3f3f3f3f;
int n, m;
int x[N];
int q[N];
int ans = 1e9;
void solve() {
cin >> n >> m;
for (int i = 1; i <= m; i++)cin >> x[i];
int sum = 0;
for (int i = 2; i <= m; i++) {
if (x[i] > x[i - 1]) {
sum += min((x[i - 1] + n - x[i]), x[i] - x[i - 1]);
if ((x[i - 1] + n - x[i]) == x[i] - x[i - 1]) continue;
else if ((x[i - 1] + n - x[i]) < x[i] - x[i - 1]) {
int len = (x[i - 1] + n - x[i]);
q[x[i]] += (n - len - len);
q[x[i - 1] + n + 1] -= (n - len - len);
} else {
int len = x[i] - x[i - 1];
q[x[i - 1]] += (n - len - len);
q[x[i] + 1] -= (n - len - len);
}
} else {
sum += min((x[i] + n - x[i - 1]), x[i - 1] - x[i]);
if ((x[i] + n - x[i - 1]) == x[i - 1] - x[i]) continue;
else if ((x[i] + n - x[i - 1]) < x[i - 1] - x[i]) {
int len = (x[i] + n - x[i - 1]);
q[x[i - 1]] += (n - len - len);
q[x[i] + n + 1] -= (n - len - len);
} else {
int len = x[i - 1] - x[i];
q[x[i] ] += (n - len - len);
q[x[i - 1] + 1] -= (n - len - len);
}
}
}
for (int i = 1; i <= 3 * n; i++) {
q[i] += q[i - 1];
}
for (int i = 1; i < n; i++) {
int len = n;
int tmp = sum + q[i + 1]+ q[i + len + 1] + q[i + len + len + 1] ;
ans = min(ans, tmp);
}cout<<ans;
}
signed main() {
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int T = 1;
while (T--) solve();
return 0;
}