#include "books.h"
#include<bits/stdc++.h>
using namespace std;
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
typedef tuple<int,vector<int>,int> trio;
map<vector<int>,map<int,int>> dp;
long long minimum_walk(std::vector<int> p, int s){
int n=sz(p); vector<int> reg(n); iota(all(reg),0);
dp[reg][0]=1;
priority_queue<trio,vector<trio>,greater<trio>> fila; fila.push({1,reg,0});
while(!fila.empty()){
auto [d,v,id]=fila.top(); fila.pop();
if(d!=dp[v][id]) continue;
fall(i,0,n-1)
fall(j,0,n-1){
auto aux=v;
int cost=abs(aux[i]-id)+abs(j-aux[i]); aux[i]=j;
if(dp[aux][j]>dp[v][id]+cost || dp[aux][j]==0){
dp[aux][j]=dp[v][id]+cost;
fila.push({dp[aux][j],aux,j});
}
}
}
int ans=1000;
fall(i,0,n-1) reg[i]=p[i];
fall(i,0,n-1) ans=min(ans,dp[reg][i]+i);
return ans-1;
}