#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: 3408