require 'minitest/autorun'
F=
->m,n{[[m,n],[m,n.reverse],[n,m],[n,m.reverse]].map{|u,d|[(0..l=u.size).find{|i|(d.to_i(2)<<i)&u.to_i(2)<1}+d.size,l].max}.min}
describe F do
def test_1
assert_equal 1, F['0', '0']
end
def test_2
assert_equal 1, F['1', '0']
end
def test_3
assert_equal 2, F['1', '1']
end
def test_4
assert_equal 5, F['11', '111']
end
def test_5
assert_equal 5, F['010', '0110']
end
def test_6
assert_equal 5, F['0010', '111']
end
def test_7
assert_equal 5, F['0010', '10111']
end
def test_8
assert_equal 6, F['00010', '11011']
end
def test_9
assert_equal 5, F['01010', '10101']
end
def test_a
assert_equal 6, F['1001', '100001']
end
def test_b
assert_equal 14, F['1110001100001', '1100100101']
end
def test_c
assert_equal 16, F['001101010000101', '100010110000']
end
def test_d
assert_equal 21, F['0010110111100', '001011010101001000000']
end
def test_e
assert_equal 28, F['0010110111100', '001011010101001001100']
end
def test_f
assert_equal 27, F['100010100100111101', '11100101100010100100000001']
end
def test_new_1
assert_equal 5, F['0010', '10111']
end
def test_new_2
assert_equal 5, F['0100', '10111']
end
def test_new_3
assert_equal 5, F['0010', '11101']
end
def test_new_4
assert_equal 5, F['0100', '11101']
end
def test_new_5
assert_equal 5, F['10111', '0010']
end
def test_new_6
assert_equal 5, F['10111', '0100']
end
def test_new_7
assert_equal 5, F['11101', '0010']
end
def test_new_8
assert_equal 5, F['11101', '0100']
end
end
cmVxdWlyZSAnbWluaXRlc3QvYXV0b3J1bicKCkY9Ci0+bSxue1tbbSxuXSxbbSxuLnJldmVyc2VdLFtuLG1dLFtuLG0ucmV2ZXJzZV1dLm1hcHt8dSxkfFsoMC4ubD11LnNpemUpLmZpbmR7fGl8KGQudG9faSgyKTw8aSkmdS50b19pKDIpPDF9K2Quc2l6ZSxsXS5tYXh9Lm1pbn0KCmRlc2NyaWJlIEYgZG8KICBkZWYgdGVzdF8xCiAgICBhc3NlcnRfZXF1YWwgMSwgRlsnMCcsICcwJ10KICBlbmQKCiAgZGVmIHRlc3RfMgogICAgYXNzZXJ0X2VxdWFsIDEsIEZbJzEnLCAnMCddCiAgZW5kCgogIGRlZiB0ZXN0XzMKICAgIGFzc2VydF9lcXVhbCAyLCBGWycxJywgJzEnXQogIGVuZAoKICBkZWYgdGVzdF80CiAgICBhc3NlcnRfZXF1YWwgNSwgRlsnMTEnLCAnMTExJ10KICBlbmQKCiAgZGVmIHRlc3RfNQogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAxMCcsICcwMTEwJ10KICBlbmQKCiAgZGVmIHRlc3RfNgogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAwMTAnLCAnMTExJ10KICBlbmQKCiAgZGVmIHRlc3RfNwogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAwMTAnLCAnMTAxMTEnXQogIGVuZAoKICBkZWYgdGVzdF84CiAgICBhc3NlcnRfZXF1YWwgNiwgRlsnMDAwMTAnLCAnMTEwMTEnXQogIGVuZAoKICBkZWYgdGVzdF85CiAgICBhc3NlcnRfZXF1YWwgNSwgRlsnMDEwMTAnLCAnMTAxMDEnXQogIGVuZAoKICBkZWYgdGVzdF9hCiAgICBhc3NlcnRfZXF1YWwgNiwgRlsnMTAwMScsICcxMDAwMDEnXQogIGVuZAoKICBkZWYgdGVzdF9iCiAgICBhc3NlcnRfZXF1YWwgMTQsIEZbJzExMTAwMDExMDAwMDEnLCAnMTEwMDEwMDEwMSddCiAgZW5kCgogIGRlZiB0ZXN0X2MKICAgIGFzc2VydF9lcXVhbCAxNiwgRlsnMDAxMTAxMDEwMDAwMTAxJywgJzEwMDAxMDExMDAwMCddCiAgZW5kCgogIGRlZiB0ZXN0X2QKICAgIGFzc2VydF9lcXVhbCAyMSwgRlsnMDAxMDExMDExMTEwMCcsICcwMDEwMTEwMTAxMDEwMDEwMDAwMDAnXQogIGVuZAoKICBkZWYgdGVzdF9lCiAgICBhc3NlcnRfZXF1YWwgMjgsIEZbJzAwMTAxMTAxMTExMDAnLCAnMDAxMDExMDEwMTAxMDAxMDAxMTAwJ10KICBlbmQKCiAgZGVmIHRlc3RfZgogICAgYXNzZXJ0X2VxdWFsIDI3LCBGWycxMDAwMTAxMDAxMDAxMTExMDEnLCAnMTExMDAxMDExMDAwMTAxMDAxMDAwMDAwMDEnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfMQogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAwMTAnLCAnMTAxMTEnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfMgogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAxMDAnLCAnMTAxMTEnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfMwogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAwMTAnLCAnMTExMDEnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfNAogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzAxMDAnLCAnMTExMDEnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfNQogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzEwMTExJywgJzAwMTAnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfNgogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzEwMTExJywgJzAxMDAnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfNwogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzExMTAxJywgJzAwMTAnXQogIGVuZAoKICBkZWYgdGVzdF9uZXdfOAogICAgYXNzZXJ0X2VxdWFsIDUsIEZbJzExMTAxJywgJzAxMDAnXQogIGVuZAplbmQK