<p>You are given a <strong>valid</strong> boolean expression as a string <code>expression</code> consisting of the characters <code>'1'</code>,<code>'0'</code>,<code>'&'</code> (bitwise <strong>AND</strong> operator),<code>'|'</code> (bitwise <strong>OR</strong> operator),<code>'('</code>, and <code>')'</code>.</p>
<ul>
<li>For example, <code>"()1|1"</code> and <code>"(1)&()"</code> are <strong>not valid</strong> while <code>"1"</code>, <code>"(((1))|(0))"</code>, and <code>"1|(0&(1))"</code> are <strong>valid</strong> expressions.</li>
</ul>
<p>Return<em> the <strong>minimum cost</strong> to change the final value of the expression</em>.</p>
<ul>
<li>For example, if <code>expression = "1|1|(0&0)&1"</code>, its <strong>value</strong> is <code>1|1|(0&0)&1 = 1|1|0&1 = 1|0&1 = 1&1 = 1</code>. We want to apply operations so that the<strong> new</strong> expression evaluates to <code>0</code>.</li>
</ul>
<p>The <strong>cost</strong> of changing the final value of an expression is the <strong>number of operations</strong> performed on the expression. The types of <strong>operations</strong> are described as follows:</p>
<ul>
<li>Turn a <code>'1'</code> into a <code>'0'</code>.</li>
<li>Turn a <code>'0'</code> into a <code>'1'</code>.</li>
<li>Turn a <code>'&'</code> into a <code>'|'</code>.</li>
<li>Turn a <code>'|'</code> into a <code>'&'</code>.</li>
</ul>
<p><strong>Note:</strong><code>'&'</code> does <strong>not</strong> take precedence over <code>'|'</code> in the <strong>order of calculation</strong>. Evaluate parentheses <strong>first</strong>, then in <strong>left-to-right</strong> order.</p>
<strong>Explanation:</strong> We can turn "1&(0<u><strong>|</strong></u>1)" into "1&(0<u><strong>&</strong></u>1)" by changing the '|' to a '&' using 1 operation.
<strong>Explanation:</strong> We can turn "(0<u><strong>&0</strong></u>)<strong><u>&</u></strong>(0&0&0)" into "(0<u><strong>|1</strong></u>)<u><strong>|</strong></u>(0&0&0)" using 3 operations.
<strong>Explanation:</strong> We can turn "(0|(<u><strong>1</strong></u>|0&1))" into "(0|(<u><strong>0</strong></u>|0&1))" using 1 operation.