#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <string>
#include <algorithm>
#include <iostream>
#include <string>
#include <map>
#include <set>
#include <functional>
#include <iostream>
#define MOD 1000000007LL
using namespace std;
typedef long long ll;
typedef pair<int,int> P;

//[????????¨???????????£??????][??????????????¨?????°][?????????????????£???????????????]
int dp[2][2001][2];
int dp2[2][2001][2];
int tmp[2001][2];
int tmp2[2001][2];
string str;
int sumx[2001];
int sumy[2001];
int n,k;

int main(void){
	cin >> str;
	n=str.size();
	scanf("%d",&k);
	for(int i=0;i<=k;i++){
		for(int j=0;j<2;j++){
			dp[0][i][j]=-3000;
			dp2[0][i][j]=3000;
			dp[1][i][j]=-3000;
			dp2[1][i][j]=3000;
		}
	}
	dp[0][0][0]=0;
	dp[1][0][0]=0;
	dp2[0][0][0]=0;
	dp2[1][0][0]=0;

	for(int aa=0;aa<n;aa++){
		for(int i=0;i<=k;i++){
			for(int j=0;j<2;j++){
				tmp[i][j]=-3000;
				tmp2[i][j]=3000;
			}
		}
		for(int i=0;i<=k;i++){
			if(str[aa]=='U' || str[aa]=='D'){
				for(int j=0;j<2;j++){
					tmp[i][j]=max(tmp[i][j],dp[0][i][j]);
					tmp2[i][j]=min(tmp2[i][j],dp2[0][i][j]);
				}
			}
			if(str[aa]=='L'){
				tmp[i][0]=max(tmp[i][0],dp[0][i][0]-1);
				tmp[i][1]=max(tmp[i][1],dp[0][i][1]+1);
				tmp2[i][0]=min(tmp2[i][0],dp2[0][i][0]-1);
				tmp2[i][1]=min(tmp2[i][1],dp2[0][i][1]+1);
				if(i+1<=k){
					tmp[i+1][1]=max(tmp[i+1][1],dp[0][i][0]+1);
					tmp[i+1][0]=max(tmp[i+1][0],dp[0][i][1]-1);
					tmp2[i+1][1]=min(tmp2[i+1][1],dp2[0][i][0]+1);
					tmp2[i+1][0]=min(tmp2[i+1][0],dp2[0][i][1]-1);
				}
			}
			if(str[aa]=='R'){
				tmp[i][0]=max(tmp[i][0],dp[0][i][0]+1);
				tmp[i][1]=max(tmp[i][1],dp[0][i][1]-1);
				tmp2[i][0]=min(tmp2[i][0],dp2[0][i][0]+1);
				tmp2[i][1]=min(tmp2[i][1],dp2[0][i][1]-1);
				if(i+1<=k){
					tmp[i+1][1]=max(tmp[i+1][1],dp[0][i][0]-1);
					tmp[i+1][0]=max(tmp[i+1][0],dp[0][i][1]+1);
					tmp2[i+1][1]=min(tmp2[i+1][1],dp2[0][i][0]-1);
					tmp2[i+1][0]=min(tmp2[i+1][0],dp2[0][i][1]+1);
				}
			}
		}
		for(int i=0;i<=k;i++){
			for(int j=0;j<2;j++){
				dp[0][i][j]=tmp[i][j];
				dp2[0][i][j]=tmp2[i][j];
			}
		}
	}

	for(int aa=0;aa<n;aa++){
		for(int i=0;i<=k;i++){
			for(int j=0;j<2;j++){
				tmp[i][j]=-3000;
				tmp2[i][j]=3000;
			}
		}
		for(int i=0;i<=k;i++){
			if(str[aa]=='L' || str[aa]=='R'){
				for(int j=0;j<2;j++){
					tmp[i][j]=max(tmp[i][j],dp[1][i][j]);
					tmp2[i][j]=min(tmp2[i][j],dp2[1][i][j]);
				}
			}
			if(str[aa]=='D'){
				tmp[i][0]=max(tmp[i][0],dp[1][i][0]-1);
				tmp[i][1]=max(tmp[i][1],dp[1][i][1]+1);
				tmp2[i][0]=min(tmp2[i][0],dp2[1][i][0]-1);
				tmp2[i][1]=min(tmp2[i][1],dp2[1][i][1]+1);
				if(i+1<=k){
					tmp[i+1][1]=max(tmp[i+1][1],dp[1][i][0]+1);
					tmp[i+1][0]=max(tmp[i+1][0],dp[1][i][1]-1);
					tmp2[i+1][1]=min(tmp2[i+1][1],dp2[1][i][0]+1);
					tmp2[i+1][0]=min(tmp2[i+1][0],dp2[1][i][1]-1);
				}
			}
			if(str[aa]=='U'){
				tmp[i][0]=max(tmp[i][0],dp[1][i][0]+1);
				tmp[i][1]=max(tmp[i][1],dp[1][i][1]-1);
				tmp2[i][0]=min(tmp2[i][0],dp2[1][i][0]+1);
				tmp2[i][1]=min(tmp2[i][1],dp2[1][i][1]-1);
				if(i+1<=k){
					tmp[i+1][1]=max(tmp[i+1][1],dp[1][i][0]-1);
					tmp[i+1][0]=max(tmp[i+1][0],dp[1][i][1]+1);
					tmp2[i+1][1]=min(tmp2[i+1][1],dp2[1][i][0]-1);
					tmp2[i+1][0]=min(tmp2[i+1][0],dp2[1][i][1]+1);
				}
			}
		}
		for(int i=0;i<=k;i++){
			for(int j=0;j<2;j++){
				dp[1][i][j]=tmp[i][j];
				dp2[1][i][j]=tmp2[i][j];
			}
		}
	}

	for(int i=0;i<2;i++){
		for(int j=1;j<=k;j++){
			for(int l=0;l<2;l++){
				dp[i][j][l]=max(dp[i][j][l],dp[i][j-1][l]);
				dp2[i][j][l]=min(dp2[i][j][l],dp2[i][j-1][l]);
			}
		}
	}
	int res=0;
	for(int i=0;i<=k;i++){
		int lr=max(max(dp[0][i][0],dp[0][i][1]),max(-dp2[0][i][0],-dp2[0][i][1]));
		int ud=max(max(dp[1][k-i][0],dp[1][k-i][1]),max(-dp2[1][k-i][0],-dp2[1][k-i][1]));
		res=max(res,lr+ud);
	}
	printf("%d\n",res);
	return 0;
}

Measured memory_bytes: 3304