do you know (I am just curious) why ARM does "and immediate" so restricted ?
ADD takes a regular 12-bit immediate.
AND also has 12 (or 13?) bits in the instruction for the immediate value, but they are not a regular binary value; they encode a 32- or 64-bit value using a scheme that makes them better at representing the sort of bit patterns you more often need with logical instructions. (At least, that is the intention.) In the earliest ARM instruction sets the format was a a few literal bits and a shift; the current scheme seems more complicated. But 22 (10110) is not one of the patterns that can be represented.
Here's a random page with a description:
https://dinfuehr.github.io/blog/encoding-of-immediate-values-on-aarch64/
Scroll down to "logical immediates".
The same guy has enumerated all the supported values, which is quite interesting and a bit hypnotic to scroll through:
https://gist.github.com/dinfuehr/51a01ac58c0b23e4de9aac313ed6a06a