You are given a phone number as a string number. number consists of digits, spaces ' ', and/or dashes '-'.

You would like to reformat the phone number in a certain manner. Firstly, remove all spaces and dashes. Then, group the digits from left to right into blocks of length 3 until there are 4 or fewer digits. The final digits are then grouped as follows:


	2 digits: A single block of length 2.
	3 digits: A single block of length 3.
	4 digits: Two blocks of length 2 each.


The blocks are then joined by dashes. Notice that the reformatting process should never produce any blocks of length 1 and produce at most two blocks of length 2.

Return the phone number after formatting.

&nbsp;
Example 1:

Input: number = "1-23-45 6"
Output: "123-456"
Explanation: The digits are "123456".
Step 1: There are more than 4 digits, so group the next 3 digits. The 1st block is "123".
Step 2: There are 3 digits remaining, so put them in a single block of length 3. The 2nd block is "456".
Joining the blocks gives "123-456".


Example 2:

Input: number = "123 4-567"
Output: "123-45-67"
Explanation: The digits are "1234567".
Step 1: There are more than 4 digits, so group the next 3 digits. The 1st block is "123".
Step 2: There are 4 digits left, so split them into two blocks of length 2. The blocks are "45" and "67".
Joining the blocks gives "123-45-67".


Example 3:

Input: number = "123 4-5678"
Output: "123-456-78"
Explanation: The digits are "12345678".
Step 1: The 1st block is "123".
Step 2: The 2nd block is "456".
Step 3: There are 2 digits left, so put them in a single block of length 2. The 3rd block is "78".
Joining the blocks gives "123-456-78".


&nbsp;
Constraints:


	2 &lt;= number.length &lt;= 100
	number consists of digits and the characters '-' and ' '.
	There are at least two digits in number.


class Solution:
    def reformatNumber(self, number: str) -> str:
        s = number.replace(" ", "").replace("-", "")
        pieces = list()
        while s:
            if len(s) == 2:
                pieces.append(s)
                break
            elif len(s) == 4:
                pieces.append(s[:2])
                pieces.append(s[2:])
                break
            else:
                pieces.append(s[:3])
                s = s[3:]
        return "-".join(pieces)
class Solution {
    String modifiedNumber="";
    public String reformatNumber(String number) {
        modifiedNumber=number.replace(" ","");
        modifiedNumber=modifiedNumber.replace("-","");
        int l=modifiedNumber.length();
        if(l<=3){
            return modifiedNumber;
        } else if(l==4){
            return modifiedNumber.substring(0,2)+"-"+ modifiedNumber.substring(2,4);
        } else {
            modifiedNumber=modifiedNumber.substring(0,3)+"-"+reformatNumber(modifiedNumber.substring(3,l));
        }
        return modifiedNumber;
    }
}
class Solution {
public:
    string reformatNumber(string number) {

        string temp; // stores the digits from string number
        string ans; //stores final answer
        int n = number.size();

        for(auto ch:number)
            if(isdigit(ch)) temp += ch;

        int len = temp.size();
        int i = 0;

        while(len>0){
            //check for different values of "len"
            if(len > 4){ //if len > 4 -> make grp of 3 digits
                ans += temp.substr(i,i+3);
                temp.erase(i,3);
                len = len-3;
                ans += "-";
            }

            else if(len == 3){ //if len == 3 -> make grp of 3 digits
                ans += temp.substr(i,i+3);
                temp.erase(i,3);
                len = len-3;
                ans += "-";
            }

            else if(len == 2){ //if len == 2 -> make grp of 2 digits
                ans += temp.substr(i,i+2);
                temp.erase(i,2);
                len = len-2;
                ans += "-";
            }

            else if(len == 4){ //if len == 4 -> make 1 grp of 2 digits & reduce the length by 2 units, in the next iteration it will automatically catch (len==2) condition
                ans += temp.substr(i,i+2);
                temp.erase(i,2);
                ans += "-";
                // ans += temp.substr(i,i+2); ------(1)
                // temp.erase(i,2); ------(2)
                // ans += "-"; ------(3)
                len = len-2; // *len = len-4* can be edited to *len = len-2*------(4)

            }

        }

        ans.pop_back();
        return ans;
    }
};
var reformatNumber = function(number) {
    let numArr = number.replace(/-/g,'').replace(/ /g,'').split('')
    let res = ''
    while(numArr.length >= 4){
        numArr.length == 4 ?
            res += numArr.splice(0,2).join('') +'-'+numArr.splice(0,2).join('') :
            res += numArr.splice(0,3).join('') + '-'
    }
    res += numArr.join('')
    return res
};
Reformat Phone Number