import java.util .ArrayList ;
public class GFG {
// String array to store keypad characters
static final String codes[ ]
= { " " , "abc" , "def" ,
"ghi" , "jkl" , "mno" ,
"pqr" , "stu" , "vwx" ,
"yz" } ;
// Function that returns an Arraylist
// which contains all the generated words
public static ArrayList< String> printKeyWords( String str)
{
// If str is empty
if ( str.length ( ) == 0 ) {
ArrayList< String> baseRes = new ArrayList<> ( ) ;
baseRes.add ( "" ) ;
// Return an Arraylist containing
// empty string
return baseRes;
}
// First character of str
char ch = str.charAt ( 0 ) ;
// Rest of the characters of str
String restStr = str.substring ( 1 ) ;
ArrayList< String> prevRes = printKeyWords( restStr) ;
ArrayList< String> Res = new ArrayList<> ( ) ;
String code = codes[ ch - '0' ] ;
for ( String val : prevRes) {
for ( int i = 0 ; i < code.length ( ) ; i++ ) {
Res.add ( code.charAt ( i) + val) ;
}
}
return Res;
}
// Driver code
public static void main( String[ ] args)
{
String str = "23" ;
// Print all the possible words
System.out .println ( printKeyWords( str) ) ;
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7IAogIApwdWJsaWMgY2xhc3MgR0ZHIHsgCiAgCiAgICAvLyBTdHJpbmcgYXJyYXkgdG8gc3RvcmUga2V5cGFkIGNoYXJhY3RlcnMgCiAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGNvZGVzW10gCiAgICAgICAgPSB7ICIgIiwgImFiYyIsICJkZWYiLCAKICAgICAgICAgICAgImdoaSIsICJqa2wiLCAibW5vIiwgCiAgICAgICAgICAgICJwcXIiLCAic3R1IiwgInZ3eCIsIAogICAgICAgICAgICAieXoiIH07IAogIAogICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIEFycmF5bGlzdCAKICAgIC8vIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgZ2VuZXJhdGVkIHdvcmRzIAogICAgcHVibGljIHN0YXRpYyBBcnJheUxpc3Q8U3RyaW5nPiBwcmludEtleVdvcmRzKFN0cmluZyBzdHIpIAogICAgeyAKICAKICAgICAgICAvLyBJZiBzdHIgaXMgZW1wdHkgCiAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA9PSAwKSB7IAogICAgICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiBiYXNlUmVzID0gbmV3IEFycmF5TGlzdDw+KCk7IAogICAgICAgICAgICBiYXNlUmVzLmFkZCgiIik7IAogIAogICAgICAgICAgICAvLyBSZXR1cm4gYW4gQXJyYXlsaXN0IGNvbnRhaW5pbmcgCiAgICAgICAgICAgIC8vIGVtcHR5IHN0cmluZyAKICAgICAgICAgICAgcmV0dXJuIGJhc2VSZXM7IAogICAgICAgIH0gCiAgCiAgICAgICAgLy8gRmlyc3QgY2hhcmFjdGVyIG9mIHN0ciAKICAgICAgICBjaGFyIGNoID0gc3RyLmNoYXJBdCgwKTsgCiAgCiAgICAgICAgLy8gUmVzdCBvZiB0aGUgY2hhcmFjdGVycyBvZiBzdHIgCiAgICAgICAgU3RyaW5nIHJlc3RTdHIgPSBzdHIuc3Vic3RyaW5nKDEpOyAKICAKICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiBwcmV2UmVzID0gcHJpbnRLZXlXb3JkcyhyZXN0U3RyKTsgCiAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gUmVzID0gbmV3IEFycmF5TGlzdDw+KCk7IAogIAogICAgICAgIFN0cmluZyBjb2RlID0gY29kZXNbY2ggLSAnMCddOyAKICAKICAgICAgICBmb3IgKFN0cmluZyB2YWwgOiBwcmV2UmVzKSB7IAogIAogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvZGUubGVuZ3RoKCk7IGkrKykgeyAKICAgICAgICAgICAgICAgIFJlcy5hZGQoY29kZS5jaGFyQXQoaSkgKyB2YWwpOyAKICAgICAgICAgICAgfSAKICAgICAgICB9IAogICAgICAgIHJldHVybiBSZXM7IAogICAgfSAKICAKICAgIC8vIERyaXZlciBjb2RlIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgCiAgICB7IAogICAgICAgIFN0cmluZyBzdHIgPSAiMjMiOyAKICAKICAgICAgICAvLyBQcmludCBhbGwgdGhlIHBvc3NpYmxlIHdvcmRzIAogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwcmludEtleVdvcmRzKHN0cikpOyAKICAgIH0gCn0g