using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace debug
{
    class main
    {
        static void Main(string[] args)
        {
            //問題クラスを展開
            ProgramB a = new ProgramB();
            a.main();//実行する

        }

    }

    class ProgramA
    {
        public void main()
        {

            string s = Console.ReadLine();

            if(s[0] == s[2])
                Console.WriteLine("Yes");
            else
                Console.WriteLine("No");

        }
    }

    class ProgramB
    {
        public void main()
        {

            string[] s = Console.ReadLine().Split(' ');
            int a = int.Parse(s[0]);
            int b = int.Parse(s[1]);
            int c = int.Parse(s[2]);
            int d = int.Parse(s[3]);

            if (a > d || b < c)
                Console.WriteLine("0");
            else
                Console.WriteLine(Math.Abs(Math.Min(b, d) - Math.Max(a, c)));
            

        }
    }

    class ProgramC
    {
        public void main()
        {
            int n = int.Parse(Console.ReadLine());
            string[] a = Console.ReadLine().Split(' ');

            int count4 = 0;
            int count2 = 0;

            for (int i = 0; i < n;i++)
            {
                if (long.Parse(a[i]) % 4 == 0)
                    count4++;
                else if(long.Parse(a[i]) % 2 == 0)
                    count2++;
            }


            if (count4 >= n / 2)
            {
                Console.WriteLine("Yes");
                return;
            }


            if (2 * count4 + count2 >= n)
            {
                Console.WriteLine("Yes");
                return;
            }
            

            Console.WriteLine("No");


        }
    }

    class ProgramD
    {
        public void main()
        {
            string[] s = Console.ReadLine().Split(' ');
            int n = int.Parse(Console.ReadLine());
            string[] a = Console.ReadLine().Split(' ');

            List<int> array = new List<int>();
            int[,] ans = new int[int.Parse(s[0]), int.Parse(s[1])];

            for (int i = 0; i < n; i++)
                for (int j = 0; j < int.Parse(a[i]); j++)
                    array.Add(i + 1);

            int k = 0;
            for (int i = 0; i < int.Parse(s[0]); i++)
                for (int j = 0; j < int.Parse(s[1]); j++)
                {
                    if (i % 2 == 0)
                    {
                        ans[i, j] = array[k];
                    }
                    else
                    {
                        ans[i, int.Parse(s[1])- 1 -j] = array[k];
                    }

                    k++;
                }

            for (int i = 0; i < int.Parse(s[0]); i++)
                for (int j = 0; j < int.Parse(s[1]); j++)
                {
                    Console.Write(ans[i, j]);
                    if( j == int.Parse(s[1]) - 1)
                        Console.WriteLine("");
                    else
                        Console.Write(" ");


                }



        }
    }

}






Measured memory_bytes: 11092