The system follows 16-bit instruction format & has 16 registers. So, in order to recognize 1 register
out of these 16 register, we need 4-bits.
It is mentioned that system has 2 type of instructions : Memory Type & ALU Type.
As, we have 16-bits, we can generate $2^{16}$ different combinations.
Now, these $2^{16}$, will gets distributed between Memory Type & ALU Type.

For Memory Type :

As, it is saying that, there are 2 distinct memory type opcode : Store & Load.
So, Under Memory Type, we need 1 -bit to recognize the opcode.
For register, we need 4-bit.
Then we need 6-bits for memory address.
For ALU Type :

1 ALU Instruction, need 1 Destination Register, Source Register 1, Source Register 2, each require 4-bit.
Let, x be the number of operations that ALU can perform.
Now,
$2^{11} + x * 2^{12} = 2^{16}$
Divide whole equation by $2^{11}$. We get,
1 + 2x = $2^{5}$
2x = 31
x = 15.5.
As, the number of opcode can’t be in fraction. So, we will do lower bound, then we will get
x = 15.
So, maximum number of distinct ALU opcode is 15(4-bits).