
// import java.lang.*;
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    static List<Integer> al = new ArrayList<>();
    static int[] a;

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    static Set<String> se = new HashSet<>();

    public static void main(String[] args) {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    }
   

  
    static int findCounts(int arr[], int n) {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    }

    // public static String sortString(String inputString)
    // {
    // // convert input string to Character array
    // Character tempArray[] = new Character[inputString.length()];
    // for (int i = 0; i < inputString.length(); i++) {
    // tempArray[i] = inputString.charAt(i);
    // }

    // // Sort, ignoring case during sorting
    // Arrays.sort(tempArray, new Comparator<Character>(){

    // @Override
    // public int compare(Character c1, Character c2)
    // {
    // // ignoring case
    // return Character.compare(Character.toLowerCase(c1),
    // Character.toLowerCase(c2));
    // }
    // });

    // // using StringBuilder to convert Character array to String
    // StringBuilder sb = new StringBuilder(tempArray.length);
    // for (Character c : tempArray)
    // sb.append(c.charValue());

    // return sb.toString();
    // }

} import java.util.*; util.* java import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {
    static List<Integer> al = new ArrayList<>();
    static int[] a;

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    static Set<String> se = new HashSet<>();

    public static void main(String[] args) {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    }
   

  
    static int findCounts(int arr[], int n) {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    }

    // public static String sortString(String inputString)
    // {
    // // convert input string to Character array
    // Character tempArray[] = new Character[inputString.length()];
    // for (int i = 0; i < inputString.length(); i++) {
    // tempArray[i] = inputString.charAt(i);
    // }

    // // Sort, ignoring case during sorting
    // Arrays.sort(tempArray, new Comparator<Character>(){

    // @Override
    // public int compare(Character c1, Character c2)
    // {
    // // ignoring case
    // return Character.compare(Character.toLowerCase(c1),
    // Character.toLowerCase(c2));
    // }
    // });

    // // using StringBuilder to convert Character array to String
    // StringBuilder sb = new StringBuilder(tempArray.length);
    // for (Character c : tempArray)
    // sb.append(c.charValue());

    // return sb.toString();
    // }

} Main static List<Integer> al = new ArrayList<>(); al new ArrayList<>() static int[] a; a static Set<String> se = new HashSet<>(); se new HashSet<>() public static void main(String[] args) {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    } main {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    } FastReader sc = new FastReader(); sc new FastReader() int n=sc.nextInt(); n sc.nextInt() sc.nextInt sc long[] a=new long[n]; a new long[n] n for(int i=0;i<n;i++)
                a[i]=sc.nextLong(); int i=0; int i=0; i 0 i<n i n i++ i++ i a[i]=sc.nextLong(); a[i]=sc.nextLong() a[i] a i sc.nextLong() sc.nextLong sc long c=0; c 0 for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                } int i=0; int i=0; i 0 i<n-1 i n-1 n 1 i++ i++ i {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                } {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                } if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   } a[i]>a[i+1] a[i] a i a[i+1] a i+1 i 1 {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   } c += a[i]-a[i+1] c a[i]-a[i+1] a[i] a i a[i+1] a i+1 i 1 a[i+1]=a[i+1]+(a[i]-a[i+1]) a[i+1] a i+1 i 1 a[i+1]+(a[i]-a[i+1]) a[i+1] a i+1 i 1 (a[i]-a[i+1]) a[i] a i a[i+1] a i+1 i 1 System.out.println(c) System.out.println System.out System System.out c String[] args args static int findCounts(int arr[], int n) {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    } findCounts {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    } int i = 0; i 0 while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        } i < n i n {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        } if (arr[i] <= 0) {
                i++;
                continue;
            } arr[i] <= 0 arr[i] arr i 0 {
                i++;
                continue;
            } i++ i continue; int elementIndex = arr[i] - 1; elementIndex arr[i] - 1 arr[i] arr i 1 if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            } arr[elementIndex] > 0 arr[elementIndex] arr elementIndex 0 {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } arr[i] = arr[elementIndex] arr[i] arr i arr[elementIndex] arr elementIndex arr[elementIndex] = -1 arr[elementIndex] arr elementIndex -1 1 {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            } arr[elementIndex]-- arr[elementIndex] arr elementIndex arr[i] = 0 arr[i] arr i 0 i++ i int sum = 0; sum 0 for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        } int j = 1; int j = 1; j 1 j < n j n j++ j++ j {
            if (Math.abs(arr[j]) > 1)
                sum++;
        } {
            if (Math.abs(arr[j]) > 1)
                sum++;
        } if (Math.abs(arr[j]) > 1)
                sum++; Math.abs(arr[j]) > 1 Math.abs(arr[j]) Math.abs Math arr[j] arr j 1 sum++ sum return sum; sum int arr[] arr int n n static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        } FastReader {
            br = new BufferedReader(new InputStreamReader(System.in));
        } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        } next {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        } while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } IOException e {
                    e.printStackTrace();
                } e.printStackTrace() e.printStackTrace e {
                    st = new StringTokenizer(br.readLine());
                } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
            return Integer.parseInt(next());
        } nextInt {
            return Integer.parseInt(next());
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
            return Long.parseLong(next());
        } nextLong {
            return Long.parseLong(next());
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() {
            return Double.parseDouble(next());
        } nextDouble {
            return Double.parseDouble(next());
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        } nextLine {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        } String str = ""; str "" try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } IOException e {
                e.printStackTrace();
            } e.printStackTrace() e.printStackTrace e {
                str = br.readLine();
            } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
    static List<Integer> al = new ArrayList<>();
    static int[] a;

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    static Set<String> se = new HashSet<>();

    public static void main(String[] args) {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    }
   

  
    static int findCounts(int arr[], int n) {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    }

    // public static String sortString(String inputString)
    // {
    // // convert input string to Character array
    // Character tempArray[] = new Character[inputString.length()];
    // for (int i = 0; i < inputString.length(); i++) {
    // tempArray[i] = inputString.charAt(i);
    // }

    // // Sort, ignoring case during sorting
    // Arrays.sort(tempArray, new Comparator<Character>(){

    // @Override
    // public int compare(Character c1, Character c2)
    // {
    // // ignoring case
    // return Character.compare(Character.toLowerCase(c1),
    // Character.toLowerCase(c2));
    // }
    // });

    // // using StringBuilder to convert Character array to String
    // StringBuilder sb = new StringBuilder(tempArray.length);
    // for (Character c : tempArray)
    // sb.append(c.charValue());

    // return sb.toString();
    // }

} public class Main {
    static List<Integer> al = new ArrayList<>();
    static int[] a;

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    static Set<String> se = new HashSet<>();

    public static void main(String[] args) {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    }
   

  
    static int findCounts(int arr[], int n) {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    }

    // public static String sortString(String inputString)
    // {
    // // convert input string to Character array
    // Character tempArray[] = new Character[inputString.length()];
    // for (int i = 0; i < inputString.length(); i++) {
    // tempArray[i] = inputString.charAt(i);
    // }

    // // Sort, ignoring case during sorting
    // Arrays.sort(tempArray, new Comparator<Character>(){

    // @Override
    // public int compare(Character c1, Character c2)
    // {
    // // ignoring case
    // return Character.compare(Character.toLowerCase(c1),
    // Character.toLowerCase(c2));
    // }
    // });

    // // using StringBuilder to convert Character array to String
    // StringBuilder sb = new StringBuilder(tempArray.length);
    // for (Character c : tempArray)
    // sb.append(c.charValue());

    // return sb.toString();
    // }

} Main

// import java.lang.*;
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    static List<Integer> al = new ArrayList<>();
    static int[] a;

    static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    static Set<String> se = new HashSet<>();

    public static void main(String[] args) {
        FastReader sc = new FastReader();
        // StringBuffer sb = new StringBuffer();
        // ArrayList<Integer> al=new ArrayList<>();
      
        // String s=sc.nextLine();



    //     int n=sc.nextInt();
    //     int x=sc.nextInt();
    //     int t=sc.nextInt();

    //     if(n>x)
    //     {
    //         if(n%x==0)
    //         System.out.println((n/x)*t);
    //         else
    //         {
    //             n /=x;
    //             System.out.println((n+1)*t);
    //         }

    //     }
    //   else
    //   System.out.println(t);


                int n=sc.nextInt();
                long[] a=new long[n];
                for(int i=0;i<n;i++)
                a[i]=sc.nextLong();
                long c=0;
                for(int i=0;i<n-1;i++)
                {
                    if(a[i]>a[i+1])
                   {
                       c += a[i]-a[i+1];
                       a[i+1]=a[i+1]+(a[i]-a[i+1]);
                       
                   }

                }
                System.out.println(c);
    }
   

  
    static int findCounts(int arr[], int n) {
        // Traverse all array elements
        int i = 0;
        while (i < n) {
            // If this element is already processed,
            // then nothing to do
            if (arr[i] <= 0) {
                i++;
                continue;
            }

            // Find index corresponding to this element
            // For example, index for 5 is 4
            int elementIndex = arr[i] - 1;

            // If the elementIndex has an element that is not
            // processed yet, then first store that element
            // to arr[i] so that we don't lose anything.
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];

                // After storing arr[elementIndex], change it
                // to store initial count of 'arr[i]'
                arr[elementIndex] = -1;
            } else {
                // If this is NOT first occurrence of arr[i],
                // then decrement its count.
                arr[elementIndex]--;

                // And initialize arr[i] as 0 means the element
                // 'i+1' is not seen so far
                arr[i] = 0;
                i++;
            }
        }
        int sum = 0;

        for (int j = 1; j < n; j++) {
            if (Math.abs(arr[j]) > 1)
                sum++;
        }
        return sum;
    }

    // public static String sortString(String inputString)
    // {
    // // convert input string to Character array
    // Character tempArray[] = new Character[inputString.length()];
    // for (int i = 0; i < inputString.length(); i++) {
    // tempArray[i] = inputString.charAt(i);
    // }

    // // Sort, ignoring case during sorting
    // Arrays.sort(tempArray, new Comparator<Character>(){

    // @Override
    // public int compare(Character c1, Character c2)
    // {
    // // ignoring case
    // return Character.compare(Character.toLowerCase(c1),
    // Character.toLowerCase(c2));
    // }
    // });

    // // using StringBuilder to convert Character array to String
    // StringBuilder sb = new StringBuilder(tempArray.length);
    // for (Character c : tempArray)
    // sb.append(c.charValue());

    // return sb.toString();
    // }

}