#icpc2014summerday4h. [icpc2014summer_day4_h]トーナメント

[icpc2014summer_day4_h]トーナメント

MathJax.Hub.Config({ tex2jax: { inlineMath: [["","",""], ["\\(","\\)"]], processEscapes: true }}); blockquote { font-family: Menlo, Monaco, "Courier New", monospace; color: #333333; display: block; padding: 8.5px; margin: 0 0 9px; font-size: 12px; line-height: 18px; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; white-space: pre; white-space: pre-wrap; word-break: break-all; word-wrap: break-word; }

Problem Statement

今年も,全国プログラミング選手権大会の時期がやってきた. 全国大会の参加権を賭けた地区大会は, 2n2^n チームが1対1の勝ち残り式トーナメント方式で対決する.

トーナメント表にはチーム番号 0,ldots,2n10,\\ldots,2^n-1 が割り振られており,1回戦から nn 回戦までの対決手順は次の通りである.

  1. 1回戦では,(チーム番号が ll のチーム)と(チーム番号が l+1l+1 のチーム)が対決する.(lequiv0 (bmod 2)l \\equiv 0 ~(\\bmod~2))
  2. i+1i+1 回戦(1lei<n1 \\le i < n)では,「チーム番号が ll 以上 l+2il+2^i 未満のチームのうち, ii 回戦までの対決で1回も負けていないチーム」と「チーム番号が l+2il+2^i 以上 l+2i+1l+2^{i+1} 未満のチームのうち, ii 回戦までの対決で一回も負けていないチーム」が対決する.(lequiv0 (bmod 2i+1)l \\equiv 0~(\\bmod~2^{i+1}))

nn 回戦まで終わると,各チームの順位は 2n(textそのチームが勝った回数)2^{n-(\\text{そのチームが勝った回数})} 位で確定する. なお,この対決には引き分けが存在しないため,対決したチームのいずれか一方が勝ち,もう一方が負ける.

晴れて地区大会の代表に選ばれた私達は,他の地区大会の結果をマネージャーに調べてもらうことにした. ここで調べてもらった結果が「マネージャーから受け取った順位表」であった. 「マネージャーから受け取った順位表」をより詳細に説明すると,長さ 2n2^n の数列で ii ( 0leqileq2n1 0 \\leq i \\leq 2^n -1 )番目の要素に チーム番号 ii のチームの順位が書かれているものである.

だが,「マネージャーから受け取った順位表」には同じ順位が大量に並んでいた! トーナメントのルール上,同じ順位が大量に並ぶなんてありえないはずだ. そこで,「マネージャーから受け取った順位表」を「無矛盾な順位表」にするために順位を変更するチーム数の最小値を計算してどのくらい順位表が間違っているかをマネージャーに教えてあげよう.

「無矛盾な順位表」とは,順位が確定したトーナメントの結果として起こりうる順位表のことを表す.


Input

入力には,「マネージャーから受け取った順位表」が以下の形式で与えられる.

nn mm
a_0a\_0 a_1a\_1 ... a_ma\_m
b_0b\_0 b_1b\_1 ... b_m1b\_{m-1}

  • 1行目は n,mn,m の2個の整数からなり, 2n2^n は「地区大会の参加チーム数」, mm は「『マネージャーから受け取った順位表』で連続した順位が並んでいる区間の個数」を表す.
  • 2行目は a_i(0leilem)a\_i(0 \\le i \\le m)m+1m+1 個の整数からなり,各 a_ia\_i は「『マネージャーから受け取った順位表』で連続した順位が並んでいる区間の区切り位置」を表す.
  • 3行目は b_i(0lei<m)b\_i(0 \\le i < m)mm 個の整数からなり,各 2b_i2^{b\_i} は「『マネージャーから受け取った順位表』におけるチーム番号が a_ia\_i 以上 a_i+1a\_{i+1}未満のチームの順位」を表す.

Constraints

  • 1lenle301 \\le n \\le 30
  • 1lemle10,0001 \\le m \\le 10{,}000
  • 0=a_0<a_1<cdots<a_m1<a_m=2n0=a\_0 < a\_1 < \\cdots < a\_{m-1} < a\_m = 2^n
  • 0leb_ilen0 \\le b\_i \\le n

Output

「マネージャーから受け取った順位表」を「無矛盾な順位表」にするために順位を変更するチーム数の最小値を1行に出力せよ.


Sample Input 1

1 1
0 2
1```

### Output for the Sample Input 1

```plain
1```

参加チーム数が2の「無矛盾な順位表」は,{"チーム番号0のチームの順位","チーム番号1のチームの順位"}として $\\{1,2\\}$ と $\\{2,1\\}$ の2通りがある. 順位表 $\\{2,2\\}$ を「無矛盾な順位表」に修正するためには,いずれかのチームの順位を1に変更しなければならない.

* * *

### Sample Input 2

```plain
2 3
0 1 2 4
0 1 2```

### Output for the Sample Input 2

```plain
2```

* * *

### Sample Input 3

```plain
2 3
0 1 3 4
0 2 1```

### Output for the Sample Input 3

```plain
0```

* * *

### Sample Input 4

```plain
4 5
0 1 2 4 8 16
0 1 2 3 4```

### Output for the Sample Input 4

```plain
10```

* * *