#include #include #include #include //#define PI M_PI #include #define pc_u putchar using namespace std; using ll=long long; #pragma GCC target ("avx") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define rep(i,a,b) for(it i=(it)(a);i<=(it)b;i++) #define irep(i,a,b) for(int i=(int)(a);i<=(int)b;i++) #define irep2(i,a,b,c) for(int i=(int)(a);i<=(int)b;i+=c) #define nrep(i,a,b) for(it i=(it)(a);i>=(it)b;i--) #define inrep(i,a,b) for(int i=(int)(a);i>=(int)b;i--) #define inrep2(i,a,b,c) for(int i=(int)(a);i>=(int)b;i-=c) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define Min(x) *min_element(all(x)) #define Max(x) *max_element(all(x)) #define moda 998244353LL #define modb 1000000007LL #define modc 968244353LL #define dai 2502502502502502502LL #define sho -dai #define aoi 1e18+1e6 #define giri 1010000000 #define en 3.14159265358979 #define eps 1e-14 #define fi first #define se second #define elif else if template using pq = priority_queue; template using pqg = priority_queue, greater>; using it=long long; using itn=int; using un=unsigned long long; using idb=double; using db=long double; using st=string; using ch=char; using bo=bool; using P=pair; using ip=pair; using vi=vector; using ivi=vector; using ivd=vector; using vd=vector; using vs=vector; using vc=vector; using vb=vector; using vp=vector

; using ivp=vector; using sp=set

; using isp=set; using ss=set; using sca=set; using si=set; using isi=set; using svi=set; using vvi=vector; using ivvi=vector; using ivvd=vector; using vvd=vector; using vvs=vector; using vvb=vector; using vvc=vector; using vvp=vector; using ivvp=vector; using vsi=vector; using ivsi=vector; using isvi=set; using vsp=vector; using ivsp=vector; using vvsi=vector; using ivvsi=vector; using vvsp=vector; using ivvsp=vector; using vvvi=vector; using ivvvi=vector; using ivvvd=vector; using vvvd=vector; using vvvb=vector; using ivvvp=vector; using vvvvi=vector; using ivvvvi=vector; using vvvvd=vector; using ivvvvvi=vector; using ivvvvvvi=vector; using ivvvvvvvi=vector; const int dx[8]={0,1,0,-1,1,1,-1,-1}; const int dy[8]={1,0,-1,0,1,-1,1,-1}; st abc="abcdefghijklmnopqrstuvwxyz"; st ABC="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; st num="0123456789"; st mb="xo"; st MB="XO"; #include #include using namespace __gnu_pbds; template using ordered_multiset = tree, rb_tree_tag, tree_order_statistics_node_update>; namespace { template ostream &operator<<(ostream &os, const pair &p) { os << p.first << " " << p.second; return os; } template istream &operator>>(istream &is, pair &p) { is >> p.first >> p.second; return is; } template ostream &operator<<(ostream &os, const vector &v) { int s = (int)v.size(); for (int i = 0; i < s; i++) os << (i ? " " : "") << v[i]; return os; } template istream &operator>>(istream &is, vector &v) { for (auto &x : v) is >> x; return is; } istream &operator>>(istream &is, __int128_t &x) { string S; is >> S; x = 0; int flag = 0; for (auto &c : S) { if (c == '-') { flag = true; continue; } x *= 10; x += c - '0'; } if (flag) x = -x; return is; } istream &operator>>(istream &is, __uint128_t &x) { string S; is >> S; x = 0; for (auto &c : S) { x *= 10; x += c - '0'; } return is; } ostream &operator<<(ostream &os, __int128_t x) { if (x == 0) return os << 0; if (x < 0) os << '-', x = -x; string S; while (x) S.push_back('0' + x % 10), x /= 10; reverse(begin(S), end(S)); return os << S; } ostream &operator<<(ostream &os, __uint128_t x) { if (x == 0) return os << 0; string S; while (x) S.push_back('0' + x % 10), x /= 10; reverse(begin(S), end(S)); return os << S; } void input() {} template void input(T &t, U &...u) { cin >> t; input(u...); } void print() { cout << "\n"; } template void print(const T &t, const U &...u) { cout << t; if (sizeof...(u)) cout << sep; print(u...); } struct IoSetupNya { IoSetupNya() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(15); cerr << fixed << setprecision(7); } } iosetupnya; } //namespace Nyaan template T Sum(vector &a){ T s=0; for(auto i:a)s+=i; return s; } template void dec(vector &a){ rep(i,0,a.size()-1)a[i]--; return; } template T gcda(T a,T b){ if(!a||!b)return max(a,b); while(a%b&&b%a){ if(a>b)a%=b; else b%=a; } return min(a,b); } it lcma(it a,it b){ return a/gcda(a,b)*b; } bo outc(int h,int w,int x,int y){ return (x<0||x>=h||y<0||y>=w); } template vector> nep(vector a){ vector> e; sort(all(a)); do{ e.emplace_back(a); }while(next_permutation(all(a))); return e; } void yn(bo a){print(a?string("Yes"):string("No"));} void YN(bo a){print(a?string("YES"):string("NO"));} #include using namespace atcoder; using mints=modint998244353; using mint=modint; using minto=modint1000000007; using vm=vector; using vms=vector; using vmo=vector; using vvm=vector; using vvms=vector; using vvmo=vector; using vvvm=vector; using vvvms=vector; using vvvmo=vector; using vvvvm=vector; using vvvvms=vector; using vvvvmo=vector; using vvvvvm=vector; using vvvvvms=vector; using vvvvvmo=vector; using vvvvvvm=vector; using vvvvvvms=vector; using vvvvvvmo=vector; /*総和をもとめるセグ木 struct nod{ it val; nod(it v=0):val(v){} }; nod op(nod a,nod b){return nod(a.val+b.val);} nod e(){return nod(0);} struct act{ it a; act(it e=0):a(e){} }; nod mapping(act f,nod x){return nod(f.a+x.val);} act comp(act f,act g){return act(f.a+g.a);} act id(){return act(0);}*/ //#define endl '\n' //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n,q;input(n,q); map e; irep(i,1,n){ int a;input(a); e[a]=i; } int x=1;it ans=0; while(q--){ int a;input(a); ans+=abs(x-e[a]); x=e[a]; } print(ans); }