unittest
{
	assert( [ "10 13" ].parse.expand.solve == 3 );			// 追加ケース
	assert( [ "10 8" ].parse.expand.solve == 4 );			// 追加ケース
	assert( [ "10 -13" ].parse.expand.solve == 4 );			// 追加ケース
	assert( [ "10 -8" ].parse.expand.solve == 3 );			// 追加ケース
	assert( [ "-10 13" ].parse.expand.solve == 4 );			// 追加ケース
	assert( [ "-10 8" ].parse.expand.solve == 3 );			// 追加ケース
	assert( [ "-10 -13" ].parse.expand.solve == 5 );		// 追加ケース
	assert( [ "-10 -8" ].parse.expand.solve == 2 );			// 追加ケース
	
	assert( [ "10 20" ].parse.expand.solve == 10 );
	assert( [ "10 -10" ].parse.expand.solve == 1 );
	assert( [ "-10 -20" ].parse.expand.solve == 12 );
}



import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto xy = input.front.split.to!( long[] );
	return tuple( xy[ 0 ], xy[ 1 ] );
}

auto solve( long x, long y )
{
	auto ans = 0L;
	if( ( 0 <= x && 0 <= y ) || ( x < 0 && y < 0 ) )
	{
		// 両方が＋か、両方が－のとき
		if( y < x ) x = -x, ans++;		// Bボタン押す
	}
	else
	{
		// 片方が＋で、もう片方が－のとき
		if( -x < y ) x = -x, ans++;		// Bボタン押す
	}
	while( x.abs != y.abs ) x++, ans++;		// Aボタン押す
	ans += ( y != x );						// Bボタン押す
	return ans;
}
