#include<bits/stdc++.h> #define MAXN 100005 #define INF 0x3f3f3f3f #define int long long usingnamespace std; inlineintread(){ int x=0,f=1; char ch=getchar(); while (ch<'0'||ch>'9'){ if (ch=='-') f=-1; ch=getchar(); } while (ch>='0'&&ch<='9'){ x=(x<<3)+(x<<1)+(ch^'0'); ch=getchar(); } return x*f; } int A[MAXN],B[MAXN],dp[MAXN]; inlineintf(int a,int b){ if (a==b) return INF; elsereturn (a>b)?(a-b):(b-a); } #undef int intmain(){ #define int long long int n=read(); for (registerint i=1;i<=n;++i){ A[i]=read(),B[i]=read(); } if (n==1&&A[1]==B[1]){ printf("-1\n"); return0; } sort(A+1,A+1+n); sort(B+1,B+1+n); dp[0]=0; for (registerint i=1;i<=n;++i){ dp[i]=dp[i-1]+f(A[i],B[i]); if (i>=2){ dp[i]=min(dp[i],dp[i-2]+f(A[i],B[i-1])+f(A[i-1],B[i])); } if (i>=3){ dp[i]=min(dp[i],dp[i-3]+f(A[i],B[i-1])+f(A[i-1],B[i-2])+f(A[i-2],B[i])); dp[i]=min(dp[i],dp[i-3]+f(A[i-1],B[i])+f(A[i-2],B[i-1])+f(A[i],B[i-2])); } } printf("%lld\n",dp[n]); }