import  java.util.* ; 
import  java.lang.* ; 
import  java.io.* ; 
 
// Problem Description:  
// Reorder the digits of a number, in order to  
// get the least one which is greater than the input number 
 
class  Ideone
{ 
		List
< Character
>  decreasingChars 
=  new  ArrayList ( ) ; 		int  firstDecreasing =  getDecreasingChars( number, decreasingChars) ; 
 
		if ( isGreatestNumber( firstDecreasing) )  { 
			return  "" ; 
		} 
 
		if ( firstDecreasing >  1 )  { 
			prefix =  number.substring ( 0 , firstDecreasing -  1 ) ; 
		} 
 
		StringBuilder resultBuilder =  new  StringBuilder( prefix) ; 
 
		char  target =  number.charAt ( firstDecreasing -  1 ) ; 
		char  leastGreater =  swapLeastGreater( decreasingChars, target) ; 
		resultBuilder.append ( leastGreater) ; 
 
		appendList( resultBuilder, decreasingChars) ; 
 
		return  resultBuilder.toString ( ) ; 
	} 
 
	private  static  Boolean  isGreatestNumber
( int  firstDecreasing
)  {  		return  firstDecreasing ==  0 ; 
	} 
 
	private  static  int  getDecreasingChars
( String  number, List
< Character
>  decreasing
)  {  		int  firstDecreasing =  number.length ( )  -  1 ; 
 
		for ( ;  firstDecreasing >  0 ;  -- firstDecreasing)  { 
			char  curChar =  number.charAt ( firstDecreasing) ; 
			char  preChar =  number.charAt ( firstDecreasing -  1 ) ; 
			decreasing.add ( curChar) ; 
 
			if ( curChar >  preChar)  { 
				break ; 
			} 
		} 
 
		return  firstDecreasing; 
	} 
 
	private  static  char  swapLeastGreater( List< Character>  chars, char  target)  { 
		char  finding =  '9' ; 
		while ( it.hasNext ( ) )  { 
			char  value 
=  ( ( Character ) it.
next ( ) ) .
charValue ( ) ;  			if ( value >  target &&  value <  finding)  { 
				finding =  value; 
			} 
		} 
 
 
		return  finding; 
	} 
 
	private  static  void  appendList( StringBuilder str, List< Character>  chars)  { 
		while ( it.hasNext ( ) )  { 
			char  value 
=  ( ( Character ) it.
next ( ) ) .
charValue ( ) ;  			str.append ( value) ; 
		} 
	} 
 
	////////////////////////////////////////////////////////////// 
	// Test Code Begins 
	////////////////////////////////////////////////////////////// 
		String  result 
=  getLeastGreaterNumber
( number
) ;  		if ( result.equals ( expected) )  { 
			System .
out .
println ( "Test passed with number "  +  number
) ;  		} 
		else  { 
			System .
out .
println ( "Test FAILED with number "  +  number
) ;  		} 
	} 
 
	private  static  void  test1( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test2( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test3( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test4( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test5( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test6( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test7( )  { 
		String  expected 
=  "111223233" ;  		test( number, expected) ; 
	} 
 
	private  static  void  test8( )  { 
		test( number, expected) ; 
	} 
 
	private  static  void  test9( )  { 
		String  expected 
=  "9123456788" ;  		test( number, expected) ; 
	} 
 
	public  static  void  main 
( String [ ]  args
)  {  		test1( ) ; 
		test2( ) ; 
		test3( ) ; 
		test4( ) ; 
		test5( ) ; 
		test6( ) ; 
		test7( ) ; 
		test8( ) ; 
		test9( ) ; 
	} 
} 
 
				aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovLyBQcm9ibGVtIERlc2NyaXB0aW9uOiAKLy8gUmVvcmRlciB0aGUgZGlnaXRzIG9mIGEgbnVtYmVyLCBpbiBvcmRlciB0byAKLy8gZ2V0IHRoZSBsZWFzdCBvbmUgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIHRoZSBpbnB1dCBudW1iZXIKCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRMZWFzdEdyZWF0ZXJOdW1iZXIoU3RyaW5nIG51bWJlcikgewoJCUxpc3Q8Q2hhcmFjdGVyPiBkZWNyZWFzaW5nQ2hhcnMgPSBuZXcgQXJyYXlMaXN0KCk7CgkJaW50IGZpcnN0RGVjcmVhc2luZyA9IGdldERlY3JlYXNpbmdDaGFycyhudW1iZXIsIGRlY3JlYXNpbmdDaGFycyk7CgoJCWlmKGlzR3JlYXRlc3ROdW1iZXIoZmlyc3REZWNyZWFzaW5nKSkgewoJCQlyZXR1cm4gIiI7CgkJfQoJCQoJCVN0cmluZyBwcmVmaXggPSAiIjsKCQlpZihmaXJzdERlY3JlYXNpbmcgPiAxKSB7CgkJCXByZWZpeCA9IG51bWJlci5zdWJzdHJpbmcoMCwgZmlyc3REZWNyZWFzaW5nIC0gMSk7CgkJfQoJCQoJCVN0cmluZ0J1aWxkZXIgcmVzdWx0QnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKHByZWZpeCk7CgkJCgkJY2hhciB0YXJnZXQgPSBudW1iZXIuY2hhckF0KGZpcnN0RGVjcmVhc2luZyAtIDEpOwoJCWNoYXIgbGVhc3RHcmVhdGVyID0gc3dhcExlYXN0R3JlYXRlcihkZWNyZWFzaW5nQ2hhcnMsIHRhcmdldCk7CgkJcmVzdWx0QnVpbGRlci5hcHBlbmQobGVhc3RHcmVhdGVyKTsKCQkKCQlDb2xsZWN0aW9ucy5zb3J0KGRlY3JlYXNpbmdDaGFycyk7CgkJYXBwZW5kTGlzdChyZXN1bHRCdWlsZGVyLCBkZWNyZWFzaW5nQ2hhcnMpOwoKCQlyZXR1cm4gcmVzdWx0QnVpbGRlci50b1N0cmluZygpOwoJfQoJCglwcml2YXRlIHN0YXRpYyBCb29sZWFuIGlzR3JlYXRlc3ROdW1iZXIoaW50IGZpcnN0RGVjcmVhc2luZykgewoJCXJldHVybiBmaXJzdERlY3JlYXNpbmcgPT0gMDsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgaW50IGdldERlY3JlYXNpbmdDaGFycyhTdHJpbmcgbnVtYmVyLCBMaXN0PENoYXJhY3Rlcj4gZGVjcmVhc2luZykgewoJCWludCBmaXJzdERlY3JlYXNpbmcgPSBudW1iZXIubGVuZ3RoKCkgLSAxOwoJCQoJCWZvcig7IGZpcnN0RGVjcmVhc2luZyA+IDA7IC0tZmlyc3REZWNyZWFzaW5nKSB7CgkJCWNoYXIgY3VyQ2hhciA9IG51bWJlci5jaGFyQXQoZmlyc3REZWNyZWFzaW5nKTsKCQkJY2hhciBwcmVDaGFyID0gbnVtYmVyLmNoYXJBdChmaXJzdERlY3JlYXNpbmcgLSAxKTsKCQkJZGVjcmVhc2luZy5hZGQoY3VyQ2hhcik7CgkJCQoJCQlpZihjdXJDaGFyID4gcHJlQ2hhcikgewoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJCgkJcmV0dXJuIGZpcnN0RGVjcmVhc2luZzsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgY2hhciBzd2FwTGVhc3RHcmVhdGVyKExpc3Q8Q2hhcmFjdGVyPiBjaGFycywgY2hhciB0YXJnZXQpIHsKCQlJdGVyYXRvciBpdD1jaGFycy5pdGVyYXRvcigpOwoJCWNoYXIgZmluZGluZyA9ICc5JzsKCQl3aGlsZShpdC5oYXNOZXh0KCkpIHsKCQkJY2hhciB2YWx1ZSA9ICgoQ2hhcmFjdGVyKWl0Lm5leHQoKSkuY2hhclZhbHVlKCk7CgkJCWlmKHZhbHVlID4gdGFyZ2V0ICYmIHZhbHVlIDwgZmluZGluZykgewoJCQkJZmluZGluZyA9IHZhbHVlOwoJCQl9CgkJfQogICAgICAgIAoJCWNoYXJzLnJlbW92ZShuZXcgQ2hhcmFjdGVyKGZpbmRpbmcpKTsKCQljaGFycy5hZGQobmV3IENoYXJhY3Rlcih0YXJnZXQpKTsKCgkJcmV0dXJuIGZpbmRpbmc7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgYXBwZW5kTGlzdChTdHJpbmdCdWlsZGVyIHN0ciwgTGlzdDxDaGFyYWN0ZXI+IGNoYXJzKSB7CgkJSXRlcmF0b3IgaXQ9Y2hhcnMuaXRlcmF0b3IoKTsKCQl3aGlsZShpdC5oYXNOZXh0KCkpIHsKCQkJY2hhciB2YWx1ZSA9ICgoQ2hhcmFjdGVyKWl0Lm5leHQoKSkuY2hhclZhbHVlKCk7CgkJCXN0ci5hcHBlbmQodmFsdWUpOwoJCX0KCX0KCQoJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCS8vIFRlc3QgQ29kZSBCZWdpbnMKCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCglwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QoU3RyaW5nIG51bWJlciwgU3RyaW5nIGV4cGVjdGVkKSB7CgkJU3RyaW5nIHJlc3VsdCA9IGdldExlYXN0R3JlYXRlck51bWJlcihudW1iZXIpOwoJCWlmKHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWQpKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGVzdCBwYXNzZWQgd2l0aCBudW1iZXIgIiArIG51bWJlcik7CgkJfQoJCWVsc2UgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3QgRkFJTEVEIHdpdGggbnVtYmVyICIgKyBudW1iZXIpOwoJCX0KCX0KCQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0MSgpIHsKCQlTdHJpbmcgbnVtYmVyID0gIjM4Mjc2IjsKCQlTdHJpbmcgZXhwZWN0ZWQgPSAiMzg2MjciOwoJCXRlc3QobnVtYmVyLCBleHBlY3RlZCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDIoKSB7CgkJU3RyaW5nIG51bWJlciA9ICIzNDcyMjY0MSI7CgkJU3RyaW5nIGV4cGVjdGVkID0gIjM0NzI0MTI2IjsKCQl0ZXN0KG51bWJlciwgZXhwZWN0ZWQpOwoJfQoJCglwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QzKCkgewoJCVN0cmluZyBudW1iZXIgPSAiMTIzNDUiOwoJCVN0cmluZyBleHBlY3RlZCA9ICIxMjM1NCI7CgkJdGVzdChudW1iZXIsIGV4cGVjdGVkKTsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0NCgpIHsKCQlTdHJpbmcgbnVtYmVyID0gIjk4NzY1NCI7CgkJU3RyaW5nIGV4cGVjdGVkID0gIiI7CgkJdGVzdChudW1iZXIsIGV4cGVjdGVkKTsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0NSgpIHsKCQlTdHJpbmcgbnVtYmVyID0gIjYiOwoJCVN0cmluZyBleHBlY3RlZCA9ICIiOwoJCXRlc3QobnVtYmVyLCBleHBlY3RlZCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDYoKSB7CgkJU3RyaW5nIG51bWJlciA9ICIxMTExMTEiOwoJCVN0cmluZyBleHBlY3RlZCA9ICIiOwoJCXRlc3QobnVtYmVyLCBleHBlY3RlZCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDcoKSB7CgkJU3RyaW5nIG51bWJlciA9ICIxMTEyMjIzMzMiOwoJCVN0cmluZyBleHBlY3RlZCA9ICIxMTEyMjMyMzMiOwoJCXRlc3QobnVtYmVyLCBleHBlY3RlZCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDgoKSB7CgkJU3RyaW5nIG51bWJlciA9ICIzMzMyMjIxMTEiOwoJCVN0cmluZyBleHBlY3RlZCA9ICIiOwoJCXRlc3QobnVtYmVyLCBleHBlY3RlZCk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgdGVzdDkoKSB7CgkJU3RyaW5nIG51bWJlciA9ICI4OTg3NjU0MzIxIjsKCQlTdHJpbmcgZXhwZWN0ZWQgPSAiOTEyMzQ1Njc4OCI7CgkJdGVzdChudW1iZXIsIGV4cGVjdGVkKTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHsKCQl0ZXN0MSgpOwoJCXRlc3QyKCk7CgkJdGVzdDMoKTsKCQl0ZXN0NCgpOwoJCXRlc3Q1KCk7CgkJdGVzdDYoKTsKCQl0ZXN0NygpOwoJCXRlc3Q4KCk7CgkJdGVzdDkoKTsKCX0KfQ==