#include <bits/stdc++.h>
    using namespace std;
    long long rows,cols;
    #define max(a,b) (a)>(b)?(a):(b)
    #define min(a,b) (a)<(b)?(a):(b)
    int main(void)
    {
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        long long h,w;
        cin>>h>>w;
        long long S=h*w;
        long long standard=S/3;
        long long s1;
        long long s3;
        long long ans=LLONG_MAX;
        long long MAX;
        long long MIN;
        for(s1=standard;;++s1)
        {
            if(s1%h==0)
            {
                s3=S-s1;
                for(long long j=s3/2;;++j)
                {
                    if(j%h==0)
                    {
                         MAX=max(max(s1,j),S-s1-j);
                         MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                         break;
                    }
                }
                for(long long j=s3/2;;++j)
                {
                    if(j%(w-s1/h)==0)
                    {
                         MAX=max(max(s1,j),S-s1-j);
                         MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                         break;
                    }


                }
                break;
            }
        }
        for(s1=standard;;--s1)
        {
            if(s1%h==0)
            {
                s3=S-s1;
                for(long long j=s3/2;;++j)
                {
                    if(j%h==0)
                    {
                         MAX=max(max(s1,j),S-s1-j);
                         MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                         break;
                    }
                }
                for(long long j=s3/2;;++j)
                {
                    if(j%(w-s1/h)==0)
                    {
                        MAX=max(max(s1,j),S-s1-j);
                        MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                        break;
                    }

                }
                break;
            }
        }

        for(s1=standard;;++s1)
        {
            if(s1%w==0)
            {
                s3=S-s1;
                for(long long j=s3/2;;++j)
                {
                    if(j%w==0)
                    {
                         MAX=max(max(s1,j),S-s1-j);
                         MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                         break;
                    }
                }
                for(long long j=s3/2;;++j)
                {
                    if(j%(h-s1/w)==0)
                    {
                        MAX=max(max(s1,j),S-s1-j);
                        MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                        break;
                    }

                }
                break;
            }
        }

        for(s1=standard;;--s1)
        {
            if(s1%w==0)
            {
                s3=S-s1;
                for(long long j=s3/2;;++j)
                {
                    if(j%w==0)
                    {
                         MAX=max(max(s1,j),S-s1-j);
                         MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                         break;
                    }
                }
                for(long long j=s3/2;;++j)
                {
                    if(j%(h-s1/w)==0)
                    {
                        MAX=max(max(s1,j),S-s1-j);
                        MIN=min(min(s1,j),S-s1-j);
                         ans=min(ans,MAX-MIN);
                        break;
                    }

                }
                break;
            }
        }
        cout << ans <<endl;
        return 0;
    }


Measured memory_bytes: 256