Java Solution
\nclass Solution {\n   //Make a list of digits to be pressed. If (minutes>=100 then list=null) || (seconds>=100 then list=null)\n    public int minCostSetTime(i
```\nclass Solution {\n   //Make a list of digits to be pressed. If (minutes>=100 then list=null) || (seconds>=100 then list=null)\n    public int minCostSetTime(int startAt, int moveCost, int pushCost, int targetSeconds) {\n        int minutes = targetSeconds/60;\n        int seconds = targetSeconds%60;\n        List<Integer> time1 = calculateTimeArray(minutes,seconds);\n        List<Integer> time2 =  calculateTimeArray(minutes-1,seconds+60);\n        return Math.min(calculateCost(startAt,moveCost,pushCost,time1),calculateCost(startAt,moveCost,pushCost,time2));\n    }\n    public int calculateCost(int startAt,int moveCost, int pushCost, List<Integer> time){\n        if(time==null) return Integer.MAX_VALUE;\n        int cost=0,index=0;\n        while(time.get(index)==0) index++; //Always skip starting zeros even if you are at zero as they cost pushCost\n        int currentPosition = startAt;\n        while(index<=3){\n            if(currentPosition==time.get(index)) cost+=pushCost;\n            else{\n                currentPosition=time.get(index);\n                cost+=pushCost+moveCost;\n            }\n            index++;\n        }\n        return cost;\n    }\n    public List<Integer> calculateTimeArray(int minutes, int seconds){\n        if(minutes>=100 || seconds>=100) return null;\n        List<Integer> time = new ArrayList<>();\n        time.add(minutes/10);\n        time.add(minutes%10);\n        time.add(seconds/10);\n        time.add(seconds%10);\n        return time;\n    }\n}\n```
[]