#abc301d. [abc301_d]Bitmask

[abc301_d]Bitmask

问题描述

给定一个整数NN和一个由01?组成的字符串SS。令TT为替换SS中的每个?01所得到的值的集合,并将结果解释为二进制整数。例如,如果S=S= ?0?,则$T=\lbrace 000_{(2)},001_{(2)},100_{(2)},101_{(2)}\rbrace=\lbrace 0,1,4,5\rbrace$。

按照十进制整数的形式打印出TT中小于或等于NN的最大值。如果TT中不存在小于或等于NN的值,则打印-1

约束条件

  • SS是一个由01?组成的字符串。
  • SS的长度在116060之间,包括边界值。
  • 1N10181\leq N \leq 10^{18}
  • NN是一个整数。

输入

输入以以下格式从标准输入中给出:

SS NN

输出

打印输出答案。


示例输入1

?0?
2

示例输出1

1

如问题描述所示,T={0,1,4,5}T=\lbrace 0,1,4,5\rbrace。其中,0011小于或等于NN,所以应该打印它们中的最大值11


示例输入2

101
4

示例输出2

-1

我们有T={5}T=\lbrace 5\rbrace,它不包含小于或等于NN的值。


示例输入3

?0?
1000000000000000000

示例输出3

5