d=lambda t:t>{}and-~max(map(d,t+[0]))
s=lambda x,y:s(y,x)if d(y)<d(x)else map(s,(x,[x]*len(y))[d(x)<d(y)],y)if d(y)else(x or 0)+(y or 0)
for (x, y) in (
(0, 0),
([-1, 0, -1], [1]),
([], [0]),
([], 0),
([], []),
([[], 0], []),
([1, 2, 3], 10),
([1, 2, 3], [10]),
([1, 2, 3], [10, [20]]),
([1, 2, 3, []], [10, [20]]),
([1, [2, [3, [4]]]], [10, [20]])
):
print s(x, y)
ZD1sYW1iZGEgdDp0Pnt9YW5kLX5tYXgobWFwKGQsdCtbMF0pKQpzPWxhbWJkYSB4LHk6cyh5LHgpaWYgZCh5KTxkKHgpZWxzZSBtYXAocywoeCxbeF0qbGVuKHkpKVtkKHgpPGQoeSldLHkpaWYgZCh5KWVsc2UoeCBvciAwKSsoeSBvciAwKQoKZm9yICh4LCB5KSBpbiAoCiAgICAoMCwgMCksCiAgICAoWy0xLCAwLCAtMV0sIFsxXSksCiAgICAoW10sIFswXSksCiAgICAoW10sIDApLAogICAgKFtdLCBbXSksCiAgICAoW1tdLCAwXSwgW10pLAogICAgKFsxLCAyLCAzXSwgMTApLAogICAgKFsxLCAyLCAzXSwgWzEwXSksCiAgICAoWzEsIDIsIDNdLCBbMTAsIFsyMF1dKSwKICAgIChbMSwgMiwgMywgW11dLCBbMTAsIFsyMF1dKSwKICAgIChbMSwgWzIsIFszLCBbNF1dXV0sIFsxMCwgWzIwXV0pCik6CiAgICBwcmludCBzKHgsIHkp