I did some tests but I don't know if this will be useful to you.. I did with smaller numbers and with more than 3 parts as you would like, but it may be an idea...Example for a more obvious number: 10000047
s = 10000047;
w = Flatten@
ParallelTable[{If[Abs[m^n - s] < 1000000, {m, n}, {}],
If[Abs[m^n - s] < 1000000, (-1)*(m^n - s), {}]}, {m, 2, 50}, {n,
2, 50}]; w

..then continuing successively in the first example:
s = 234422;
w = Flatten@
ParallelTable[{If[Abs[m^n - s] < 1000, {m, n}, {}],
If[Abs[m^n - s] < 1000, (-1)*(m^n - s), {}]}, {m, 2, 50}, {n, 2,
50}]; w

..and so on for all values and regulating the numbers within the code until you get to the following table:
5^10 + 22^4 + 13^2 - 3
6^9 - 5^7 + 2^9 - 6^2
10^7 + 7^2 - 2
25^5 + 22^4 + 13^2 - 3

It is clear that this method does not cover all possibilities, but at least arrives at some result. It is susceptible to the values chosen within the code and the processing speed for larger numbers!
In the case of a larger and less obvious number for example: 2855754796332
s = 2855754796332;
w2 = Flatten@
ParallelTable[{If[Abs[m^n - s] < 1000000000, {m, n}, {}],
If[Abs[m^n - s] < 1000000000, (-1)*(m^n - s), {}]}, {m, 2,
2000}, {n, 2, 2000}]; w2

...and doing the same procedure by modifying the code values until you simplify the result:
s = 345203668;
w3 = Flatten@
ParallelTable[{If[Abs[m^n - s] < 1000000, {m, n}, {}],
If[Abs[m^n - s] < 1000000, (-1)*(m^n - s), {}]}, {m, 2, 400}, {n,
2, 400}]; w3

..and so it continues until it reaches the final result (at least the result I found):
1300^4 - 51^5 - 3^11 - 6^4 + 5^2 + 1

These were my tests but the numbers were not so big and the modifications to the code at every step were done manually. So, for much larger numbers this method would give a little more work.
There may be another method to do that, or even some way to have fewer terms, but I don't know..
Even if it's not exactly what you'd like, it might be of some use.