#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <cmath>
#include <cstring>
#include <cstring>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <string>
#include <climits>

using namespace std;

typedef long long ll;
typedef pair<int,int> ii;

int main() {
	string s;
	string undo;
	while(cin >> s){
		if(s == "END") return 0;
		//KLADNA CAST
		char addToBegin = 0;
		bool negative = false;
		bool end = false;
		if (s[0] != '-') {
			undo = s;
			int n = s.length();
			int i = n - 1;	
			int down = 0;
			int up = 0;
			while (up < 2 ) {
				if (s[i] < '9' ) {
					++s[i];
					++up;
				}
				if (s[i] == '9' ) --i;
				if (i == 0 && up < 2 ) {
					s = undo;
					negative = true;
					if (s[0] < '9' ) ++s[0];
					else addToBegin = 1;
					sort(s.begin(),s.end());
					end = true;
					break;
				}
			}
			--i;
			while (down < 1 && !end) {
				if (i >= 0 && s[i] > '0' ) {
					--s[i];
					++down;
				}
				if (s[i] == 0) --i;
				if (i == 0 && s[i]=='1' && down < 1 ) {
					s = undo;
					s[1] = s[0];
					for (int k = 0; k < n -1; ++k ) s[k] = s[k+1];
					++s[0];
					sort(s.begin(),s.end());
					for (int k = 0; k < (n -1) /2; ++k) swap(s[k],s[n-k-1]);  
					end = true;
				}
			}
			if (negative) cout<<'-';
			if (addToBegin != 0) cout<<addToBegin;
			cout<<s<<"\n";
		}
	}
	return 0;
}