Kidney paired donation programs allow patients registered with an incompatible donor to receive a suitable kidney from another donor, as long as the latter's co-registered patient, if any, also receives a kidney from a different donor. The kidney exchange problem (KEP) aims to find an optimal collection of kidney exchanges taking the form of cycles and chains. Existing exact solution methods for KEP either are designed for the case where only cyclic exchanges are considered, or can handle long chains but are scalable as long as cycles are short. We develop the first decomposition method that is able to deal with long cycles and long chains for large realistic instances. More specifically, we propose a branch-and-price framework, in which the pricing problems are solved (for the first time) through multi-valued decision diagrams. Also, we present a new upper bound on the optimal value of KEP, stronger than the one proposed in the literature, that is obtained via our master problem. Computational experiments show superior performance of our method over the state of the art by optimally solving almost all instances in the PrefLib library for multiple cycle and chain lengths.