1 #include <algorithm>
2 #include <cassert>
3 #include <cctype>
4 #include <cmath>
5 #include <complex>
6 #include <cstdio>
7 #include <cstdlib>
8 #include <cstring>
9 #include <ctime>
10 #include <deque>
11 #include <functional>
12 #include <iterator>
13 #include <iostream>
14 #include <list>
15 #include <map>
16 #include <numeric>
17 #include <queue>
18 #include <set>
19 #include <string>
20 #include <valarray>
21 #include <vector>
22 #include <iomanip>
23 using namespace std;
24
25 typedef long long ll;
26 typedef vector<int> vi; // vi(长度,值)
27 typedef vector<string> vs ;
28 typedef vector<double> vd ;
29 typedef istringstream ISS;
30 typedef ostringstream OSS;
31
32 #define all(a) (a).begin(),(a).end()
33 #define mset(a,v) memset(a,v,sizeof(a))
34 #define pb push_back //a.pb( )
35 #define min(a,b) ((a)<(b)?(a):(b))
36 #define max(a,b) ((a)>(b)?(a):(b))
37 #define sz size()
38 #define rep(i,n) for(int i=0;i<(n);i++)
39 #define swap(a,b) a^=b^=a^=b;
40
41
42
43 class SwappingDigits
44 {
45 public:
46 int minnum0(string num)
47 {
48 int i,min0=0;
49 int len=num.length();
50 for (i=len-1;i>0;i--)
51 {
52 if((num[i] < num[min0])&&(num[i] != '0'))
53 min0 = i;
54 }
55 return min0;
56 }
57 int minnump(string num,int j)
58 {
59 int i,minp=j;
60 int len=num.length();
61 for (i=len;i>j;i--)
62 {
63 if((num[i] < num[minp]))
64 minp = i;
65 }
66 return minp;
67 }
68 string minNumber(string num)
69 {
70 int i,j,mid;
71 int len=num.length();
72 mid = len/2;
73
74 i = minnum0(num);
75 if(i)
76 {
77 swap(num[i],num[0]);
78 return num;
79 }
80
81 for(j=1;j<mid;j++)
82 {
83 i=minnump(num,j);
84 if(i != j)
85 {
86 swap(num[i],num[j]);
87 return num;
88 }
89 }
90
91 return num;
92 }
93 };
94 int main()
95 {
96 SwappingDigits sol;
97 string s;
98 while(true)
99 {
100 cin>>s;
101 cout<<sol.minNumber(s)<<endl;
102 }
103 }