New update is available. Click here to update.

Phone Code

Posted: 10 Mar, 2021
Difficulty: Hard

PROBLEM STATEMENT

Try Problem

One day ninja saw his father using an old phone with a number pad and thought of a scenario. She saw that the phone had a numeric keypad and each number was mapped to some alphabets as shown in the figure below. She has a list of valid words. She wants to create an algorithm that would take a given sequence of numbers as input and return a list of matching words that are also present in her list of valid words.

Note:
 You can convert the list of valid words into any data structure you desire.
For example :
If the sequence of number = 2633, and the list of valid words = [ride, used, code, tree, boed], 
Then you would print “code” and “boed” as they can be formed by using the digit sequence and they are also present in the list of valid words.
Input Format:
The first line contains an integer ‘T’ which denotes the number of test cases or queries to be run. Then the test cases are as follows.
The first and line of each test case consist of the sequence of numbers.
The second line of each test case consists of ‘W’, which denotes the number of given valid words.
The third and final line of each test case consists of the list of ‘W’ valid words.
Output Format:
For each test case, print the list of words that can be formed using the given sequence of numbers and are also present in the given list of valid words.

Print the output of each test case in a separate line.
Note:
You don’t need to print anything; It has already been taken care of. You just need to complete the given function.
Constraints:
1 <= T <= 10
1 <= Sequence <= 10
1 <= W <= 200

where ‘T’ is the number of test cases, “sequence” is the length of the given sequence of numbers, and “W”, is the number of valid words each test case can have. 

Time limit: 1 sec