#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class solution
{
public:
void readdata()
{
cin >> n >> m;
cin.get();
char ch = ' ';
while (ch!='\n')
{
int e;
cin >> e;
S1.push_back(e);
ch = cin.get();
}
ch = ' ';
while (ch != '\n')
{
int e;
cin >> e;
S2.push_back(e);
ch = cin.get();
}
}
void min_time()
{
readdata();
memo = vector<vector<int>>(n, vector<int>(m, -1));
cout << dp(n - 1, m - 1);
}
private:
int n;
int m;
vector<int> S1;
vector<int> S2;
vector<vector<int>> memo;
int dp(int i, int j)
{
if (i==-1)
{
int t = 0;
for (int m = j; m >= 0; m--)
t += abs(S2[m]);
return t;
}
if (j == -1)
{
int t = 0;
for (int m = i; m >= 0; m--)
t += abs(S1[m]);
return t;
}
if (memo[i][j]!=-1)
{
return memo[i][j];
}
int res;
if (S1[i]==S2[j])
{
res = dp(i - 1, j - 1);
}
else
{
int res1, res2;
{
int r1 = dp(i - 1, j - 1) + abs(S1[i] - S2[j]);
int r2 = dp(i - 1, j) + abs(S1[i]);
res1 = min(r1, r2);
}
{
int r1 = dp(i - 1, j - 1) + abs(S1[i] - S2[j]);
int r2 = dp(i, j-1) + abs(S2[j]);
res2 = min(r1, r2);
}
res = min(res1, res2);
memo[i][j] = res;
}
return res;
}
};
int main()
{
auto* s = new solution;
s->min_time();
return 0;
}